9

gpython-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

layoutgraph、およびで頂点の順序が維持されるため、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 に答える