2012-07-03 4 views
6

예를 들어 draw_networkx_edges을 통해 networkx 가장자리를 그릴 때 선 속성을 세부적으로 제어 할 수 있다면 누구에게 알 수 있습니까? 나는 (matplotlib) Line2D 속성 인 solid_capstylesolid_joinstyle을 제어하려고합니다.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()에서 내가 원하는 것을 수행하는 방법을 알 수 없습니다 ... 어떤 제안입니까? 당신이하기 matplotlib 라인 컬렉션에 capstyle를 설정할 수 없습니다처럼

카슨

답변

7

것 같습니다.

그러나 당신이 capstyle을 제어 할 수 있습니다 Line2D의 양쪽 모두의 객체를 사용하여 모서리의 자신의 컬렉션을 만들 수 있습니다 : 그 @Aric에 대한

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

감사합니다. 완벽하게 작동합니다! –