2012-04-11 28 views
10

Tôi đang cố gắng thêm nhãn cạnh cho biểu đồ. Tất cả đều hoạt động tốt, chỉ có vấn đề là khi hai cạnh cắt nhau - tôi chỉ thấy một trong các nhãn khi chúng xảy ra trùng lặp.Cách đặt bù trừ nhãn cạnh mạng? (để tránh trùng lặp nhãn)

example

Như bạn có thể thấy nhãn hphob-alpha được hiển thị nhưng nhãn cực-beta không được hiển thị (tôi đoán là nó nằm ngay dưới đề cập trước đó).

Tôi không thể tìm thấy bất kỳ tài liệu nào về cách định vị lại nhãn, bất kỳ lời khuyên nào về cách đặt một số loại bù đắp để di chuyển nhãn?

Mã sử ​​dụng để tạo ra các đồ thị:

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 

Trả lời

9

tôi sử dụng phiên bản 1.6 của NetworkX, và ở đó tôi có thể gửi label_pos để draw_networkx_edge_labels(). Theo mặc định, điều này được thiết lập để 0,5, nhưng sử dụng ví dụ của bạn và thiết lập nó để 0.3, tôi nhận được kết quả sau: 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

tôi vừa chứng kiến ​​rằng nó bao gồm trong [tài liệu cho phiên bản 1.6] (http://networkx.lanl.gov/reference/generated/networkx.drawing.nx_pylab.draw_networkx_edge_labels.html). – Maehler

+0

Lợi ích khác là cạnh có thể có nhiều nhãn và có thể được đặt ở các vị trí khác nhau này. – Vikram

Các vấn đề liên quan