Python Matplotlib';s面向对象接口:如何在新图形中将先前创建的图用作子图?

Python Matplotlib';s面向对象接口:如何在新图形中将先前创建的图用作子图?,python,matplotlib,Python,Matplotlib,我正在编写的应用程序中的一个步骤就是创建绘图,以便为用户可视化各种分析。创建这些图的方法可以单独调用,因此它们的输出是单独的fig和ax对象 其中一种方法基本上如下所示: def make_a_plot(self): fig = plt.figure() ax = fig.add_subplot(1,1,1) x = self.x y = self.y ax.plot(x,y) return fig, ax 所以,如果我在我

我正在编写的应用程序中的一个步骤就是创建绘图,以便为用户可视化各种分析。创建这些图的方法可以单独调用,因此它们的输出是单独的fig和ax对象

其中一种方法基本上如下所示:

def make_a_plot(self):
    fig = plt.figure()
    ax = fig.add_subplot(1,1,1)
    
    x = self.x
    y = self.y
    
    ax.plot(x,y)

    return fig, ax
所以,如果我在我的类创建的不同对象上多次调用这个方法,就会得到图1、图2、ax1、ax2

在程序的另一部分中,我希望能够多次调用此方法,然后在一个合成图形中显示一起创建的所有图形。创建新图形并将ax1和ax2添加为单独的子地块似乎不起作用

我还尝试了一个for循环,该循环获取ax1.lines[I].get_xdata()和ax1.lines[I].get_ydata(),并从中创建新的绘图。但是,我找不到一种方法来访问图中的其他元素,如vline和fill_。所以,在我找到一堵墙之前,这个方法让我走了大约50%的路


我该怎么做?我很乐意在山顶上的某个地方为任何能帮我解决这个问题的人建立一座神殿:)

。许多建立在matplotlib之上的库通过允许将
ax
参数传递到函数中来解决这个问题(例如,我想到了熊猫)。如果未指定,将创建一个新地物-否则,传入的
ax
将用于打印。这允许您在调用站点而不是在函数中控制图形布局。