手动绘制python中的树状图

时间:2011-06-26 13:57:36

标签: python python-imaging-library dendrogram

我已经实现了一种算法来解决图中的聚类问题。我使用python库“python-graph”来表示图形。现在,在我计算的每一步(算法是迭代的)我必须绘制树形图的一部分。实际上,从原始图开始计算聚类的意义上,该算法是分裂的。现在,我不知道用什么来绘制树形图(有人建议PIL,但我正在寻找一些简单的东西,我不知道如何使用PIL)...你能建议一些事情并告诉我如何用它绘图?

注意:我读了其他问题但是一切似乎都使用了使用集群自动计算的方法......这不是我想要的:我需要手动绘制树形图或者至少找到一种方法来表示计算出要绘制的簇。

谢谢!

4 个答案:

答案 0 :(得分:2)

可以找到实施scipy dendrogram的代码here,这个简单的implementation将帮助您继续前进。

答案 1 :(得分:2)

或许其他解决方案可能是这个: http://ete.cgenomics.org/ 我建议你开始使用主帮助pdf: http://ete.cgenomics.org/releases/ete2/doc/ete_tutorial.pdf

答案 2 :(得分:2)

ETE python工具包为您提供了很多树绘图的可能性。绘图引擎允许编程树渲染。树可以绘制为PNG或SVG图像。树形图可以表示为矩形或圆形发束。

虽然ETE通常用于处理系统发育树,但它也提供了一个聚类模块,具有几种特殊的预定义可视化模式。

查看http://packages.python.org/ete2/tutorial/tutorial_drawing.html

上的一些示例

答案 3 :(得分:0)

您可以在scipy树状图内使用绘图功能。为此,您将需要生成与scipy树状图输出相同的数据。示例:

from scipy.cluster.hierarchy import dendrogram,  _plot_dendrogram
# Generate data for plot without plotting:
ddata = dendrogram(linked_data, no_plot=True)  

MaxVerticalAxis = 120  # You can choose max value or take it from ddata["ddcoord"]

#Plotting command:
_plot_dendrogram(ddata["icoord"], ddata["dcoord"], ddata["ivl"], 30,20, MaxVerticalAxis,  "top", False, ddata["color_list"], leaf_font_size=None, leaf_rotation=None, contraction_marks=None, ax=None, above_threshold_color='C0')