Python3-在多个图形上打印相同的matplotlib轴对象?

Python3-在多个图形上打印相同的matplotlib轴对象?,python,matplotlib,figure,axes,Python,Matplotlib,Figure,Axes,我有一个脚本,我正在修改它以包含一个GUI。在其中,我创建了一个带有子图的图(其排列取决于图的数量,例如,4个图进入一个正方形,而不是4个交叉)。该图(每个分析的“目标”都有一个子图)保存到.png中 在构建GUI时,我正在编写“结果”框架,并希望在它们自己的选项卡上显示这些单独的子窗口。我已经编写了代码来按照我想要的方式布置框架,但是为了将子地块分割成自己的绘图,我需要将完成的Axis对象(例如,该目标的整个子地块)绘制到框架中的新图形上 由于在运行前子图的数量未知,我已经在一个数组(/lis

我有一个脚本,我正在修改它以包含一个GUI。在其中,我创建了一个带有子图的图(其排列取决于图的数量,例如,4个图进入一个正方形,而不是4个交叉)。该图(每个分析的“目标”都有一个子图)保存到.png中

在构建GUI时,我正在编写“结果”框架,并希望在它们自己的选项卡上显示这些单独的子窗口。我已经编写了代码来按照我想要的方式布置框架,但是为了将子地块分割成自己的绘图,我需要将完成的Axis对象(例如,该目标的整个子地块)绘制到框架中的新图形上

由于在运行前子图的数量未知,我已经在一个数组(/list?
axs
)中有了我的轴对象/子图,其成员是各个轴对象(每个包含使用
ax.scatter()
创建的数据点,以及使用
ax.plot()创建的若干行和注释)
ax.注释

当我最初创建轴时,我使用

fig, axs = plt.subplots(num='Title', nrows=numrow, ncols=numcol, 
                        figsize=[numcol*5, numrow*5], 
                        subplot_kw={'adjustable':'box', 'aspect':1})
现在有没有办法将这些轴绘制到一个新的图形上(将包含在GUI的“结果”框架中的图形)?在我的搜索中,我只想到了将多个轴绘制到一个图形上的方法(即如何使用
子绘图()
),但没有想到如何将预先存在的轴对象扔到一个新图形中,而这个新图形最初与它没有关联。我不希望从头开始重新绘制轴——已经有相当多的装饰和多个数据集/线绘制在轴上

有什么想法吗?很高兴按要求发布代码,但由于这更多的是“我该怎么做”而不是“我的代码为什么不能工作”,所以我没有发布太多


谢谢大家!

我认为这是不可能的,您必须在另一个图形中重新创建Axis对象。这只是代码重组的问题。请注意,您的方法不会显著提高渲染性能。Matplotlib无论如何都必须重新渲染Axis对象,这是计算成本很高的部分。创建对象相对便宜

你想做的就是:

从matplotlib导入pyplot
pyplot.ion()
图1=pyplot.figure()
轴=图1.添加子批次()
坐标轴绘图([0,1],[0,1])
图2=pyplot.figure()
图2.添加_轴(轴)
其中提出:

ValueError:必须在当前图形中创建轴
以及附注的文件:

在极少数情况下,
add_axes
可以使用单个参数调用,即已在当前图形中创建的轴实例,但未在图形的轴列表中创建


因此,这非常清楚地表明这不是一个受支持的用例。

不,这是不可能的。坐标轴必须在给定的图形上创建。计算机的一个优点是,通常很容易让它们执行两次操作。谢谢!我想我可以从自定义的
drawplots()
函数中取出相关的块,将其包装到自己的函数中,然后在
drawplots()
和我设置GUI框架的块中调用它。干杯