2012-04-11 6 views
10

그래프의 가장자리 레이블을 추가하려고합니다. 모두 잘 작동하고 문제는 두 모서리가 교차 할 때뿐입니다. 중복되는 경우 레이블 중 하나만 볼 수 있습니다. 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

다른 이점은 가장자리가 여러 개의 레이블을 가질 수 있으며 이러한 서로 다른 오프셋에 배치 될 수 있다는 것입니다. – Vikram

관련 문제