用python igraph绘制社区

2024-06-08 20:40:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python I graph中有一个图g。我可以通过以下方法获得一个VertexCluster社区结构:

community = g.community_multilevel()

community.membership给出了图中所有顶点的组成员列表。

我的问题很简单,但还没有找到一个特定于python的答案。如何绘制具有社区结构可视化的图形?最好是PDF格式,所以

layout = g.layout("kk")
plot(g, "graph.pdf", layout=layout) # Community detection?

非常感谢。


Tags: 方法答案community图形列表可视化绘制结构
3条回答

使用mark_groups可以很好地绘制社区:


示例

from igraph import *
import random
random.seed(1)


g = Graph.Erdos_Renyi(30,0.3)
comms = g.community_multilevel()


plot(comms, mark_groups = True)

结果如下:

enter image description here

希望这有帮助。

可以将VertexClustering对象直接传递给plot函数;它将自动绘制底层图形,并为集群自动选择颜色。可以在layout=中指定所需的布局。。。关键字参数和往常一样。

顶点在layoutgraphVertexCluster中保持顺序,因此可以执行以下操作:

查找社区结构中的社区数:

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

结果(真漂亮!)

graph

相关问题 更多 >