2012-04-11 5 views
10

मैं ग्राफ के लिए किनारे लेबल जोड़ने की कोशिश कर रहा हूं। यह सब अच्छी तरह से काम करता है, केवल समस्या तब होती है जब दोनों किनारों का अंतर होता है - मैं केवल लेबलों में से एक को देखता हूं क्योंकि वे ओवरलैप होते हैं।नेटवर्कएक्स एज लेबल्स ऑफ़सेट कैसे सेट करें? (लेबल ओवरलैप से बचने के लिए)

example

आप देख सकते हैं hphob-अल्फा लेबल दिखाया लेकिन polarity-बीटा लेबल नहीं दिखाया गया है है (मेरा अनुमान है यह अधिकार के तहत पहले उल्लेख है कि है)।

लेबलों को फिर से स्थानांतरित करने के बारे में कोई दस्तावेज नहीं मिला, कोई सलाह है कि लेबल को स्थानांतरित करने के लिए किसी प्रकार का ऑफ़सेट कैसे सेट किया जाए?

कोड ग्राफ उत्पन्न करने के लिए प्रयोग किया है:

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

संबंधित मुद्दे