如何在Python中创建一个径向集群,如下面的代码示例?
我已经找到了几个关于如何创建这些确切的层次结构的示例(至少我相信它们是这样的),如下所示stackoverflow.com/questions/2982929/哪个工作得很好,几乎可以执行我正在寻找的内容。
[编辑]这是Paul的代码的简化版本,现在应该更容易让某人帮助将其转换为径向集群而不是当前的集群形状
import scipy
import pylab
import scipy.cluster.hierarchy as sch
def fix_verts(ax, orient=1):
for coll in ax.collections:
for pth in coll.get_paths():
vert = pth.vertices
vert[1:3,orient] = scipy.average(vert[1:3,orient])
# Generate random features and distance matrix.
x = scipy.rand(40)
D = scipy.zeros([40,40])
for i in range(40):
for j in range(40):
D[i,j] = abs(x[i] - x[j])
fig = pylab.figure(figsize=(8,8))
# Compute and plot the dendrogram.
ax2 = fig.add_axes([0.3,0.71,0.6,0.2])
Y = sch.linkage(D, method='single')
Z2 = sch.dendrogram(Y)
ax2.set_xticks([])
ax2.set_yticks([])
fix_verts(ax2,0)
fig.savefig('test.png')
但是,我需要一个径向集群,而不是树状结构,如下图所示。
没有找到相关结果
已邀请:
3 个回复
宦哨抹存胳
输出绘制
(而不是黑客绘制的那个)。我最终可能会做些什么,但很快就会没事。 我假设您的数据自然允许这种径向嵌入。你验证了吗?
中是否存在适合您的方法? 似乎对于任何方法,
将返回二叉树结构。在您的示例中,您有更多的常规树。您需要一些额外的知识来整合树节点。这一切都准备好了黑客攻击原始树状图的想法。 更新: 这个天真的例子情节是否足够合理地适合您的目的?如果是这样,我将能够发布一些非常简单的代码来实现它。 更新2: 这是代码: radial_demo.py:
radial_grouper.py:
radial_support.py:
radial_visualizer.py:
你可以在这里找到源代码。无论如何,请随时修改它,但请保持未来的修改与要点同步。
课刊灭似
包和
来做到这一点。查看
库中的以下示例: http://networkx.lanl.gov/examples/drawing/circular_tree.html 一般来说,
有许多非常好的图形分析和绘图方法
黎喊病
,它在树形图中合并每个“U”底部的顶点。 试试这个:
结果是这样的: 我希望你就是这样。