Дендрограмма, созданная scipy-cluster, не показывает

Я использую scipy-cluster для создания иерархической кластеризации на некоторых данных. В качестве последнего шага приложения я вызываю функцию dendrogram для построения кластеризации. Я бегу на Mac OS X Snow Leopard, используя встроенный Python 2.6.1 и этот пакет matplotlib . Программа работает нормально, но в конце значок Rocket Ship (как я понимаю, это пусковая установка для приложений GUI на питоне) появляется и исчезает немедленно, ничего не делая. Ничего не видно. Если я добавлю «raw_input» после вызова, он просто отскакивает вверх и вниз в доке навсегда. Если я запускаю простую примерную заявку для matplotlib с терминала, она работает нормально. У кого-нибудь есть опыт?

  • формат scipy linkage
  • как построить и аннотировать иерархические кластерные дендрограммы в scipy / matplotlib
  • 2 Solutions collect form web for “Дендрограмма, созданная scipy-cluster, не показывает”

    У меня была такая же проблема на Ubuntu 10.04. Чтобы отобразить графику с интерактивной консоли ipython, запустите ее с помощью переключателя «-pylab», который позволяет интерактивное использование matplotlib:

     ipython -pylab 

    Чтобы отобразить вашу графику во время выполнения автономного скрипта, используйте вызов matplotlib.pyplot.show. Вот пример из главной страницы hcluster: первая и последняя строки – это значимые бит:

     from matplotlib.pyplot import show from hcluster import pdist, linkage, dendrogram import numpy from numpy.random import rand X = rand(10,100) X[0:5,:] *= 2 Y = pdist(X) Z = linkage(Y) dendrogram(Z) show() 

    Вызов ipython с помощью переключателя «-pylab» не изменил меня. (Система: Fedora 13)

    Хотя это и не идеально, моим решением было явно написать полученную фигуру в виде файла. Например:

     ... dendrogram(Z) pylab.savefig( "temp.png" ) 

    Надеюсь, это поможет любому, кто сталкивается с той же проблемой.

    Поправки: будьте осторожны, просто используя copy-and-paste с кратким учебником пакета hcluster, особенно в том случае, если вы вызываете pylab.savefig () после нескольких типов рисунков дендрограмм, показанных в учебнике, т.е.

     distMat = # whatever distance matrix you have dendrogram( linkage( distMat ) ) pylab.savefig( "exampleDendrogram.png" ) dendrogram( linkage( distMat, method="complete" ) ) #instead of default "single" pylab.savefig( "exampleDendrogram.png" ) 

    Тогда exampleDendrogram.png будет содержать как односвязную дендрограмму, так и дендрограмму полной связи на том же рисунке, и они, скорее всего, пересекаются и выглядят как беспорядок.

    Если вы так же глупы, как и я, вы потратите 30-180 минут в замешательстве о том, как правильно использовать hcluster, когда на самом деле это просто вопрос сброса matplotlib между вызовами dendrogram:

     distMat = # whatever distance matrix you have dendrogram( linkage( distMat ) ) pylab.savefig( "exampleDendrogram1.png" ) pylab.cla() dendrogram( linkage( distMat, method="complete" ) ) #instead of default "single" pylab.savefig( "exampleDendrogram2.png" ) 

    Теперь полученные файлы изображений dendrogram будут выглядеть так, как вы ожидали, чтобы они выглядели.

    Python - лучший язык программирования в мире.