1

对此问题的任何帮助表示赞赏。我正在尝试使用 matplotlib 制作子图,我编写的代码如下:

import networkx as nx

Fig, Axes = plt.subplots(nrows=1, ncols=2)
plt.tight_layout()
for i in range(0, NoOfVehicles):
  Axes[i].set_aspect(1)
  Axes[i].xaxis.set_major_formatter(mtick.NullFormatter())
  Axes[i].yaxis.set_major_formatter(mtick.NullFormatter()

现在我如何在第一个情节中绘制一些东西,然后在第二个情节中绘制其他东西。

我想要做

nx.drawing.nx_pylab.draw_networkx_nodes(GPlot[0].G, GPlot[0].Position, node_size=100, node_color=GPlot[0].Color)

在第一个情节和

nx.drawing.nx_pylab.draw_networkx_nodes(GPlot[1].G, GPlot[1].Position, node_size=100, node_color=GPlot[1].Color)

在第二。

总之,这就是我想要做的:我希望第一组节点出现在 subplot(1,2,1) 中,第二组节点出现在 subplot(1,2,2) 中。但两者都出现在同一个情节(1,2,2)中。

GPlot 只是一个包含 GraphPlot 类的 2 个对象的列表

class GraphForPlot:
    def __init__(self):
        self.G = nx.Graph()
        self.Components = []
        self.ActiveStatus = {}
        self.Nodes = []
        self.Position = {}
        self.Color = []
4

1 回答 1

1

您需要告诉netwkorkx要绘制到哪些轴,如果不这样做,它将绘制到当前活动的轴(无论plt.gca()返回什么(doc)。

nx.drawing.nx_pylab.draw_networkx_nodes(..., ax=Axes[0])
nx.drawing.nx_pylab.draw_networkx_nodes(..., ax=Axes[1])

作为旁注,您不应该对实例变量(pep8)使用驼峰式大小写,它可能会与类名发生冲突(在这种情况下matplotlib.axes.Axes)。

于 2013-03-05T19:34:27.837 回答