子图中的 networkx 正在部分绘制轴框架之外的节点

2023-12-05

当我在子图中绘制 networkx 图时,一些节点在轴的框架中被部分切断。我已经尝试过使用所有不同类型的图表和布局,这始终是一个问题。它总是切断我的节点。就好像 networkx 在比实际更大的轴上绘制图表。

这是一个最小的例子

plt.subplot(2, 1, 1)
plt.scatter(range(10), range(10))

plt.subplot(2, 1, 2)
G = nx.erdos_renyi_graph(20, p=0.1)
nx.draw_networkx(G)
plt.show()

这就是我从中得到的。正如您所看到的,节点 0 和节点 7 不适合框架。

Minimal example


背景

您的问题似乎是由新版本引起的自动缩放引入的算法matplotlib3.2.0。在链接中它指出,旧算法确实

对于 Axes.scatter ,它会使限制足够大,不会在散布中剪切任何标记。

因此,新算法已停止执行此操作,从而产生了可爱的节点。

如何解决您的问题

您可以简单地增加轴的长度:

import networkx as nx
import matplotlib.pylab as plt

figure = plt.subplot(2, 1, 1)
plt.scatter(range(10), range(10))

plt.subplot(2, 1, 2)
G = nx.erdos_renyi_graph(20, p=0.1)
nx.draw_networkx(G)
axis = plt.gca()
# maybe smaller factors work as well, but 1.1 works fine for this minimal example
axis.set_xlim([1.1*x for x in axis.get_xlim()])
axis.set_ylim([1.1*y for y in axis.get_ylim()])
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

子图中的 networkx 正在部分绘制轴框架之外的节点 的相关文章

随机推荐