2012-04-11 45 views
10

グラフのエッジラベルを追加しようとしています。それはすべてうまくいく、問題は2つの辺が交差するときだけです - 私は重なり合うようにラベルの1つを見ます。NetworkXエッジラベルのオフセットを設定するには? (ラベルの重なりを避けるため)

example

あなたは(私の推測では、それが正しい前述の下にあるということである)hphobアルファラベルが示されているが、極性ベータラベルが示されていない見ることができるように。

ラベルを再配置する方法に関するドキュメント、ラベルを移動するためのオフセットを設定する方法についてのアドバイスは見つかりませんでしたか?グラフを生成するために使用

コード:

try: 
    import matplotlib.pyplot as plt 
except: 
    raise 

import networkx as nx 

G=nx.Graph() 

a="hphob" 
b="polarity" 
c="alpha" 
d="beta" 
G.add_edge(a,b,weight=0.5) 
G.add_edge(b,c,weight=0.5) 
G.add_edge(c,d,weight=0.5) 
G.add_edge(a,d,weight=0.5) 
G.add_edge(a,c,weight=0.5) 
G.add_edge(b,d,weight=0.5) 

pos=nx.spring_layout(G) # positions for all nodes 

# nodes 
nx.draw_networkx_nodes(G,pos,node_size=7000, node_color="white") 

# edges 
nx.draw_networkx_edges(G,pos, 
     width=6,alpha=0.5,edge_color='black') 


# labels 
nx.draw_networkx_labels(G,pos,font_size=20,font_family='sans-serif') 

nx.draw_networkx_edge_labels(G,pos, 
    { 
     (a,b):"x", (b,c):"y", (c,d):"w", (a,d):"z", (a,c):"v", (b,d):"r" 
    } 
) 

plt.axis('off') 
plt.savefig("weighted_graph.png") # save as png 
plt.show() # display 

答えて

9

私はNetworkXのバージョン1.6を使用して、そこに私はdraw_networkx_edge_labels()label_posを提出することができます。デフォルトでは、これは0.5に設定されますが、あなたの例を使用して0.3に設定すると、私は次のような結果を得る: Weighted graph with edge labels shifted

nx.draw_networkx_edge_labels(G,pos, 
    { 
     (a,b):"x", (b,c):"y", (c,d):"w", (a,d):"z", (a,c):"v", (b,d):"r" 
    }, 
    label_pos=0.3 
) 

Here are the details

+0

を私は今、それがために、[ドキュメントに含まれていることを見ましたバージョン1.6](http://networkx.lanl.gov/reference/generated/networkx.drawing.nx_pylab.draw_networkx_edge_labels.html)。 – Maehler

+0

もう1つの利点は、エッジが複数のラベルを持つことができ、これらの異なるオフセットに配置できることです。 – Vikram

関連する問題