我正在使用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)
我想要的是节点在每个连续的幻灯片上保持相同的停止,这在视觉上更令人愉悦。谁能帮助我?
P.S。如果这是相关的,我将幻灯片中的数字(使用LaTeX / Beamer制作)放入的方式是
\begin{center}
\multiinclude[<+>][start=0,format=pdf]{pics/evolution1}
\end{center}
提前感谢您的帮助!
答案 0 :(得分:1)
我自己找到了答案,对任何有兴趣的人。解决方案是调用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])
这解决了这个问题。