Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python networkx:具有一致节点放置的多个图形_Python_Networking_Matplotlib_Graphviz_Beamer - Fatal编程技术网

Python networkx:具有一致节点放置的多个图形

Python networkx:具有一致节点放置的多个图形,python,networking,matplotlib,graphviz,beamer,Python,Networking,Matplotlib,Graphviz,Beamer,我正在使用networkx绘制同一图形的多个图形,因为我在图形中添加了越来越多的边。这些数字包含在幻灯片中的连续幻灯片中 我希望每个图形中的节点显示在每个图形中完全相同的位置。不幸的是,尽管我对每个绘图使用相同的定位数据,但每次添加靠近图形侧面的边时,图形都会缩小一点 这就是我的意思: 这是我目前正在使用的代码: import networkx as nx import matplotlib.pyplot as plt from networkx.drawing.nx_agraph impor

我正在使用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)
我想要的是,在每个连续的幻灯片上,节点都保持在同一个停止位置,这将更加视觉愉悦。有人能帮我吗

另外,如果这是相关的,我在幻灯片中放置数字的方式(用LaTeX/Beamer制作)是

\begin{center}
\multiinclude[][start=0,format=pdf]{pics/evolution1}
\结束{中心}

提前感谢您的帮助

我自己找到了一个答案,给任何感兴趣的人。解决方案是调用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])
这就解决了问题

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