在另一个 matplotlib 图形中使用 matplotlib 图形



所以我有一个函数,它接受一些数据,并返回一个matplotlib数字。这就是看起来像的样子(当我在函数中处理非常具体的数据时,我无法提供一个最小的工作示例,但我的问题更多的是关于一般的东西(。

 def foo(data):
     fig, ax= plt.subplots()
     ...
     return fig

这个功能运行得很好,如果我想显示图片,我只需调用foo(data).show(),一切都很好。

我的问题是,我愿意在代码的另一部分(不在同一个文件中(中,在更一般的图形中使用该数字。例如,我可能有foo(data1)foo(data2)foo(data3),我想在同一个 matplotlib 图形中排成一行。

实际上,我不知道是否可以在 Matplotlib 中做到这一点,以及如何做到这一点。

在函数外部创建figax,并将ax作为具有默认值的参数传递(因此我们可以在函数中创建 ax 以保持向后兼容性:

def foo(data, ax=None):
   if ax is None:
      _, ax = plt.subplots()

这允许您仍像以前一样调用foo(data)

如果您需要根据要求多次绘制此"函数",则:

fig, axes = plt.subplots(nrows=3)
foo(data1, axes[0])
foo(data2, axes[1])
foo(data3, axes[2])

如果还需要fig,请将其作为参数传递给函数,或通过 ax.figure 访问它。代码将变为:

def foo(data, ax=None):
   if ax is None:
      fig, ax = plt.subplots()
   else:
      fig, ax = ax.figure, ax

最新更新