Дендрограмма, сгенерированная Scipy-Cluster, не показывает

StackOverflow https://stackoverflow.com/questions/2967858

Вопрос

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

Это было полезно?

Решение

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

ipython -pylab

Чтобы получить свою графику для отображения во время выполнения автономного скрипта, используйте Matplotlib.pyplot.show Call. Вот пример из Hcluster HomePage, первая и последняя строка - значимые биты здесь:

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 с помощью переключателя «-пилаба» не имел значения для меня. (Система: Fedora 13)

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

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

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

Поправка: будьте осторожны с тем, что просто используют копию и вставку с кратким учебником пакета 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 между вызовами дендрограммы:

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" )

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top