1

有向グラフを作成し、エッジをサブスクライブしたいと思います。

import os
import scipy as sc
import pylab
import networkx 
import matplotlib.pyplot as plt
from networkx import *
from numpy import *

G=networkx.DiGraph()
R=[('S0','S1'),('S1','S2'),('S1','S7'),('S2','S3'),('S2','S6'),('S3','S4'),('S3','S6'),('S4','S5'),('S5','S6'),('S6','S7'),('S7','S8'),('S7','S5'),('S8','Sk') ] 

G.add_edges_from([ (2,3,) ])
G.add_edges_from(R) 
networkx.draw_circular(G)

plt.show()
plt.savefig("path.png");

今、私はこれをしました。グラフを作成しましたが、エッジをサブスクライブする方法がわかりません。たとえば、などのようにマークを付けてエッジを付けたいと思いS0ますS1"565"これにより、視覚的でわかりやすくなります。前もって感謝します!

ここに画像の説明を入力してください

4

3 に答える 3

3

1つのステップ(networkx.draw_circular(G))でレイアウトおよび描画する代わりに、ノード、エッジ、ノードラベル、およびエッジラベルを個別にレイアウトおよび描画できます。これが小さな例です:

import networkx as nx
import matplotlib.pyplot as plt

G=nx.DiGraph()
R=[('S0','S1'),('S1','S2'),('S1','S7'),('S0','S7')] 

G.add_edges_from(R)

# Calculate layout and get all positions
pos = nx.circular_layout(G)

# Draw everything
nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_edges(G, pos)
nx.draw_networkx_labels(G, pos)
nx.draw_networkx_edge_labels(G, pos, 
    {
        ('S0', 'S1'): 'edge1',
        ('S1', 'S2'): 'edge2',
        ('S1', 'S7'): 'edge3',
        ('S0', 'S7'): 'edge4'
    }
)

plt.axis('off')
plt.savefig("path.png");
plt.show()

さまざまな描画関数に渡すことができるパラメータの詳細については、ドキュメントを確認してください

于 2012-04-22T12:59:59.177 に答える
1

次のコマンドを使用して、ノードとegdesを選択的に描画できます。

# nodes
networkx.draw_networkx_nodes(graph, pos, nodelist=[list of the nodes])
# edges
networkx.draw_networkx_edges(graph, pos, edgelist=[list of edges])

http://networkx.lanl.gov/reference/drawing.html#module-networkx.drawing.nx_pylabには他にもオプションがあります

于 2012-04-22T08:37:04.207 に答える
1

まあ、私はこれをやりたかった:ここに画像の説明を入力してください そして私はそれをした。つまり、エッジをマークしたかったのです。簡単そうに見えますが、そうではありませんでした。本当に。

完全な画像はこちらhttp://s019.radikal.ru/i603/1204/2a/921bc6badfae.png

 import os
 import scipy as sc
 import pylab
 import networkx 
 import matplotlib.pyplot as plt
 from networkx import *
 from numpy import *

 G=networkx.DiGraph()
 R=[('S0','S1'),('S1','S2'),('S1','S7'),('S2','S3'),('S2','S6'),('S3','S4'),('S3','S6'),('S4','S5'),('S5','S6'),('S6','S7'),('S7','S8'),('S7','S5'),('S8','Sk') ] 
 G.add_edges_from(R) 
 label={R[1]:'a',R[2]:'b',R[3]:'c'}
 networkx.draw_networkx_edge_labels(G,pos=networkx.graphviz_layout(G),edge_labels=label)
 networkx.draw_graphviz(G)
 plt.show()
 plt.savefig("path.png");
于 2012-04-22T13:02:21.007 に答える