2016-10-05 17 views
0

アソシエーションルールをプロットしようとしていますが、下のノードラベルをノードに「追いつける」ことが困難です。つまり、各ラベルを自動的にそれぞれのノードの近くに置いて、値をハードコードする必要はありません。下の出力には、ノードラベルの一部が含まれていません。これらのラベルをノードの後ろに動的に配置するにはどうすればよいですか?networkxグラフをプロットする:ノードに隣接するノードラベル?

import pandas as pd 
import networkx as nx 
import matlotlib.pyplot as plt  

df = pd.DataFrame({'node1': ['candy', 'cookie', 'beach', 'mark', 'black'], 
        'node2': ['beach', 'beach', 'cookie', 'beach', 'mark'], 
        'weight': [10, 5, 3, 4, 20]}) 

G = nx.Graph() 

for idx in df.index: 
    node1 = df.loc[idx, 'node1'] 
    node2 = df.loc[idx, 'node2'] 
    weight = df.loc[idx, 'weight'] 
    G.add_edge(node1, node2, weight = weight) 

nx.draw(G, node_size = 100) 

pos = nx.spring_layout(G) 

nx.draw_networkx_labels(G, pos = pos, font_size = 14, with_labels = True) 

plt.draw() 
plt.show() 

enter image description here

+0

'networkx'コマンド' draw_networkx'がそれを処理し、あなたの2つの異なる描画コマンドがすることを行います。 'Nx.draw_networkx(G、pos = pos、node_size = 100、font_size = 14、with_labels = True)' しかし、ラベルはノードの上に正確に表示されます。それらにオフセットを追加する方法を調べなければなりません。 – GeckStar

+0

私はすでにラベルをノードに直接追加する方法を知っています。私はオフセットを追加する方法を尋ねています。 – blacksite

+0

私が少なくとも投稿したコマンドは、あなたが要求したノードの「動的にフォローする」ことを世話します。ラベルは、あなたの例のように遠くに置くのではなく、各ノードの上に表示されます。 – GeckStar

答えて

2

あなたは位置の2セットを作成している

nx.draw(G, node_size = 100) 

、その後

pos = nx.spring_layout(G) 

を呼び出すとき。解決方法は、最初に位置を取得し、ノード、ラベルの両方に使用することです。

pos = nx.spring_layout(G) 
nx.draw(G, pos = pos, node_size = 100) 
# do stuff to pos if you want offsets 
nx.draw_networkx_labels(G, pos = pos, font_size = 14, with_labels = True) 
関連する問題