当我在子图中绘制 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](https://i.stack.imgur.com/2jb1B.png)
背景
您的问题似乎是由新版本引起的自动缩放引入的算法matplotlib
3.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(使用前将#替换为@)