用python igraph绘制社区

时间:2014-02-24 00:44:38

标签: python graph igraph modularity decomposition

我在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?

非常感谢。

3 个答案:

答案 0 :(得分:6)

顶点仍在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

答案 1 :(得分:6)

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

答案 2 :(得分:6)

使用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

希望这有帮助。