2014-02-24 47 views
5

python-igraph中有一個圖g。我可以得到一個VertexCluster社會結構如下:使用python繪製社區igraph

community = g.community_multilevel() 

community.membership讓我在圖中的所有頂點組成員的名單。

我的問題很簡單,但我沒有在SO上找到python特定的答案。我如何繪製其社區結構的可視化圖?最好爲PDF,所以像

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

非常感謝。

回答

6

您可以將VertexClustering對象直接傳遞給繪圖函數;它會自動繪製底層圖形,並自動爲羣集選擇顏色。像往常一樣,可以在layout = ...關鍵字參數中指定所需的佈局。

+0

感謝您的捷徑! – jayelm

6

頂點保持在layout,有序和VertexCluster,所以你可以做這樣的事情:

查找社區結構社區的數量:

>>> max(community.membership) 
10 

然後創建一個列表/字典與max + 1獨特的顏色(可能不像以下手動):

>>> color_list = [ 
...  'red', 
...  'blue', 
...  'green', 
...  'cyan', 
...  'pink', 
...  'orange', 
...  'grey', 
...  'yellow', 
...  'white', 
...  'black', 
...  'purple' 
... ] 

然後,使用列表理解,創建一個包含每個頂點的顏色列表基於該頂點的組成員,並分配給:

plot(g, "graph.png", layout=layout, 
    vertex_color=[color_list[x] for x in community.membership]) 

結果(這是這麼漂亮!)

graph

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