【发布时间】:2020-05-06 08:04:38
【问题描述】:
用于网络社区检测的 Girvan-Newman 算法:
通过逐步从原始社区中移除边缘来检测社区 图形。传统上,该算法会删除“最有价值”的边缘 在每一步中具有最高中介中心性的边。作为 图分解成碎片,紧密结合的社区结构是 暴露出来,结果可以用树状图来描述。
在 NetworkX 中,实现返回集合元组的迭代器。第一个元组是由 2 个社区组成的第一个切割,第二个元组是由 3 个社区组成的第二个切割,依此类推,直到最后一个具有 n 个单独节点(树状图的叶子)的集合的元组。
import networkx as nx
G = nx.path_graph(10)
comp = nx.community.girvan_newman(G)
list(comp)
[({0, 1, 2, 3, 4}, {5, 6, 7, 8, 9}), ({0, 1}, {2, 3, 4}, {5, 6, 7、8、 9}), ({0, 1}, {2, 3, 4}, {5, 6}, {8, 9, 7}), ({0, 1}, {2}, {3, 4} , {5, 6}, {8, 9, 7}), ({0, 1}, {2}, {3, 4}, {5, 6}, {7}, {8, 9}), ({0} , {1}, {2}, {3, 4}, {5, 6}, {7}, {8, 9}), ({0}, {1}, {2}, {3}, {4}, {5 , 6}, {7}, {8, 9}), ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8, 9}) , ({0}, {1}、{2}、{3}、{4}、{5}、{6}、{7}、{8}、{9})]
问题是:如何绘制这个树状图?
我查看过scipy.cluster.hierarchy.dendrogram,但它需要一个“链接矩阵”,我猜是scipy.cluster.hierarchy.linkage 创建的那个,但我不确定如何将这个元组列表转换成这个“链接矩阵”。
所以我在问如何绘制这个树状图,有/没有 SciPy 的 dendrogram 的帮助。
【问题讨论】:
-
从元组列表中构建另一个有向图,这将是一个树状图,我会将其转换为
dendrogram()所需的矩阵。有趣的。谢谢@ItamarMushkin -
这也是一个选项,用自定义树状图布局绘制有向图:stackoverflow.com/questions/29586520/…
标签: python matplotlib scipy networkx dendrogram