切断されたグラフをブロックに分割したい (community_spinglass を使用するため)。ただし、サブグラフを取得して community_spinglass() を使用すると、元のグラフの頂点のラベルが失われます。40 以上の頂点を扱っているため、それらを追跡するのは簡単ではありません。これが私の問題の「おもちゃの例」です。
import igraph
from igraph import Graph
g4_matrix = [ [0,0,-1,0,0,0,0], [0,0,0,0.8,0.2,0,0], [-1,0,0,0,0,0,0], [0,0.8,0,0,1,0,0.1], [0,0.2,0,1,0,-0.3,-.7], [0,0,0,0,-0.3,0,1], [0,0,0,0.1,-0.7,1,0] ]
v_name = ["1", "2", "3", "4", "5", "6", "7"]
g4 = Graph.Weighted_Adjacency(g4_matrix, mode = 'undirected',attr = 'weight' )
igraph.plot(g4,bbox = (300, 300),vertex_label = v_name)
ブロックとコミュニティを取得した後:
g4_blocks = g4.blocks()
g4_block = g4.vs.select(g4_blocks[1])
Block1 = g4.subgraph(g4_block)
igraph.plot(Block1, bbox = (200, 200), vertex_label = v_name)
しかし、頂点が以前のラベルではなく v_name リストに順番に従っていることがわかります。さらに、コミュニティを取得すると、次のようになります。
comm = Block1.community_spinglass()
for c in comm:
print c
[2, 3, 4]
[0, 1]
サブグラフのインデックスを取得しますが、元のグラフのインデックスと関連付けるのは困難です。
元のグラフのインデックスまたはラベルを参照してコミュニティを取得する方法はありますか?
前もって感謝します。