2012-07-03 11 views
6

क्या किसी को पता है कि नेटवर्कक्स किनारों के माध्यम से ड्राइंग करते समय लाइन गुणों पर जुर्माना नियंत्रण होना संभव है (उदाहरण के लिए) draw_networkx_edges? मैं लाइन solid_capstyle और solid_joinstyle को नियंत्रित करना चाहता हूं, जो (matplotlib) Line2D गुण हैं।networkx draw_networkx_edges capstyle

>>> import networkx as nx 
>>> import matplotlib.pyplot as plt 
>>> G = nx.dodecahedral_graph() 
>>> edges = nx.draw_networkx_edges(G, pos=nx.spring_layout(G), width=7) 
>>> plt.show() 

उपरोक्त उदाहरण में, किनारों जो मैं capstyle को नियंत्रित करके छिपाना चाहते हैं, के बीच 'अंतराल' देखते हैं। मैंने अंतराल को भरने के लिए सही आकार पर नोड्स जोड़ने के बारे में सोचा था, लेकिन मेरे अंतिम साजिश में किनारों रंगीन हैं, इसलिए नोड जोड़ने से इसे काट नहीं दिया जाएगा। मैं प्रलेखन से बाहर नहीं आ सकता या edges.properties() देख रहा हूं कि मैं क्या करना चाहता हूं ... कोई सुझाव?

कार्सन

उत्तर

7

ऐसा लगता है कि आप matplotlib लाइन संग्रह पर capstyle निर्धारित नहीं कर सकते हैं।

लेकिन आप Line2D वस्तुओं का उपयोग कर किनारों का अपना संग्रह जो आप capstyle नियंत्रित करने देता है बना सकते हैं:

import networkx as nx 
import matplotlib.pyplot as plt 
from matplotlib.lines import Line2D 
G = nx.dodecahedral_graph() 
pos = nx.spring_layout(G) 
ax = plt.gca() 
for u,v in G.edges(): 
    x = [pos[u][0],pos[v][0]] 
    y = [pos[u][1],pos[v][1]] 
    l = Line2D(x,y,linewidth=8,solid_capstyle='round') 
    ax.add_line(l) 
ax.autoscale() 
plt.show() 
+0

कि @Aric के लिए धन्यवाद। अच्छी तरह से काम! –

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