9

g在 python-igraph 中有一个图表。我可以通过以下方式获得VertexCluster社区结构:

community = g.community_multilevel()

community.membership给我一个图表中所有顶点的组成员列表。

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

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

非常感谢。

4

3 回答 3

9

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

结果(太漂亮了!)

图形

于 2014-02-24T01:18:20.063 回答
8

绘制社区的一个好方法可能是以下使用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)

这导致以下结果:

在此处输入图像描述

希望这可以帮助。

于 2017-07-03T08:34:20.437 回答
6

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

于 2014-02-24T09:18:56.293 回答