所以我有一个函数,它接受一些数据,并返回一个matplotlib数字。这就是看起来像的样子(当我在函数中处理非常具体的数据时,我无法提供一个最小的工作示例,但我的问题更多的是关于一般的东西(。
def foo(data):
fig, ax= plt.subplots()
...
return fig
这个功能运行得很好,如果我想显示图片,我只需调用foo(data).show()
,一切都很好。
我的问题是,我愿意在代码的另一部分(不在同一个文件中(中,在更一般的图形中使用该数字。例如,我可能有foo(data1)
、foo(data2)
和foo(data3)
,我想在同一个 matplotlib 图形中排成一行。
实际上,我不知道是否可以在 Matplotlib 中做到这一点,以及如何做到这一点。
在函数外部创建fig
和ax
,并将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