jay*_*elm 7 python modularity graph decomposition igraph
我g在python-igraph中有一个图形.我可以通过VertexCluster以下方式获得社区结构:
community = g.community_multilevel()
Run Code Online (Sandbox Code Playgroud)
community.membership 给我一个图表中所有顶点的组成员资格列表.
我的问题非常简单,但我还没有找到特定于python的答案.如何使用其社区结构的可视化绘制图形?最好是PDF,所以像
layout = g.layout("kk")
plot(g, "graph.pdf", layout=layout) # Community detection?
Run Code Online (Sandbox Code Playgroud)
非常感谢.
顶点仍然在有序layout,graph和VertexCluster,这样你就可以做这样的事情:
查找社区结构中的社区数量:
>>> max(community.membership)
10
Run Code Online (Sandbox Code Playgroud)
然后创建一个具有max + 1独特颜色的列表/字典(可能不像下面那样手动):
>>> color_list = [
... 'red',
... 'blue',
... 'green',
... 'cyan',
... 'pink',
... 'orange',
... 'grey',
... 'yellow',
... 'white',
... 'black',
... 'purple'
... ]
Run Code Online (Sandbox Code Playgroud)
然后,使用列表推导,根据该顶点的组成员资格创建一个包含每个顶点颜色的列表,并将其分配给vertex_color:
plot(g, "graph.png", layout=layout,
vertex_color=[color_list[x] for x in community.membership])
Run Code Online (Sandbox Code Playgroud)
结果(太漂亮了!)

您可以将VertexClustering对象直接传递给绘图函数; 它将自动绘制基础图形,并自动为集群选择颜色.可以像往常一样在layout = ...关键字参数中指定所需的布局.
绘制社区的好方法可以是以下使用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)
Run Code Online (Sandbox Code Playgroud)
这导致以下结果:
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
8073 次 |
| 最近记录: |