gpt4 book ai didi

python - 网络x : multiple figure with consistent node placement

转载 作者:太空宇宙 更新时间:2023-11-03 15:39:24 24 4
gpt4 key购买 nike

我正在使用networkx绘制同一个图的多个图,因为我向图中添加了越来越多的边。这些数字包含在幻灯片中的连续幻灯片中。

我希望每个图中的节点都显示在每个图中完全相同的位置。不幸的是,虽然我对每个图使用相同的定位数据,但每次我在靠近图形侧面添加边缘时,图形都会按比例缩小一点。

这就是我的意思: enter image description here

这是我目前正在使用的代码:

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)

我想要的是节点在每个连续幻灯片上保持在同一位置,这在视觉上会更加令人愉悦。有人可以帮我吗?

附注如果这是相关的,我将数字放入幻灯片(用 LaTeX/Beamer 制作)的方式是

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

预先感谢您的帮助!

最佳答案

我自己找到了答案,适合任何感兴趣的人。解决方案是调用 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])

这解决了问题。

关于python - 网络x : multiple figure with consistent node placement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42290107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com