我在python-igraph中有一个图g
。我可以使用以下内容获得VertexCluster
社区结构:
community = g.community_multilevel()
community.membership
为我提供了图表中所有顶点的组成员资格列表。
我的问题非常简单,但我还没有在SO上找到特定于python的答案。如何使用其社区结构的可视化绘制图形?最好是PDF,所以像
layout = g.layout("kk")
plot(g, "graph.pdf", layout=layout) # Community detection?
非常感谢。
答案 0 :(得分:6)
顶点仍在layout
,graph
和VertexCluster
中排序,因此您可以执行以下操作:
查找社区结构中的社区数量:
>>> max(community.membership)
10
然后创建一个具有max + 1
唯一颜色的列表/字典(可能不像下面那样手动):
>>> color_list = [
... 'red',
... 'blue',
... 'green',
... 'cyan',
... 'pink',
... 'orange',
... 'grey',
... 'yellow',
... 'white',
... 'black',
... 'purple'
... ]
然后,使用列表推导,根据该顶点的组成员资格创建一个包含每个顶点颜色的列表,并将其分配给vertex_color
:
plot(g, "graph.png", layout=layout,
vertex_color=[color_list[x] for x in community.membership])
结果(它太漂亮了!)
答案 1 :(得分:6)
您可以将VertexClustering对象直接传递给绘图函数;它将自动绘制基础图形,并自动为集群选择颜色。可以像往常一样在layout = ...关键字参数中指定所需的布局。
答案 2 :(得分:6)