2017-02-17 8 views
0

그래프에 점점 더 많은 가장자리를 추가하므로 networkx를 사용하여 동일한 그래프의 여러 그림을 그립니다. 숫자는 슬라이드 쇼의 연속 슬라이드에 포함됩니다.networkx : 일관된 노드 배치가있는 여러 그림

각 그림의 노드가 각 그림의 정확히 같은 위치에 표시되기를 원합니다. 불행하게도, 각 플롯에 대해 동일한 위치 데이터를 사용하고 있지만, 그림은 그림의 측면에 가까운 가장자리를 추가 할 때마다 조금씩 축소됩니다.

import networkx as nx 
import matplotlib.pyplot as plt 
from networkx.drawing.nx_agraph import graphviz_layout 

num_nodes = 100 
num_edges = range(10, 80, 5) 
file_name = "evolution1" 

G = nx.gnm_random_graph(num_nodes, num_edges[-1]) 
pos = graphviz_layout(G, prog="neato") 


for (i, ne) in enumerate(num_edges): 
    plt.figure(figsize=(4,3)) 

    nx.draw(G, 
      pos, 
      with_labels=False, 
      node_size=15, 
      node_color="black", 
      edgelist=G.edges()[:ne]) 

    plt.axis('off') 
    plt.savefig(file_name + "-%s.pdf" %i, format="pdf", 
       transparent=True) 

내가 원하는 것은 노드가 각에서 동일한 정지에 머물 것입니다 : 이것은 내가 지금 사용하고 코드입니다 enter image description here

:

무슨 뜻인지입니다 연속 슬라이드를 사용하면 훨씬 더 시각적으로 즐겁습니다. 아무도 나를 도울 수 있습니까?

P. 경우 이것은 관련, 나는 (LaTeX의/비머로 만들어지는) 슬라이드 쇼에 수치를 넣어 방법은 도움을 사전에

\begin{center} 
    \multiinclude[<+>][start=0,format=pdf]{pics/evolution1} 
\end{center} 

덕분입니다!

답변

0

관심있는 사람에게 직접 답변을 찾았습니다. 해결 방법은 plt.xlim 및 plt.ylim을 호출하는 것입니다. 내가 추가 한 다음

maxx = max([coor[0] for coor in pos.values()]) 
maxy = max([coor[1] for coor in pos.values()]) 

하고, 단지 파일에 그림을 저장하기 전에,이 문제가 해결

plt.xlim([-10, maxx + 10]) 
plt.ylim([-10, maxy + 10]) 

추가합니다.