因此,我有一个函数,可以输入一些数据,并返回matplotlib图形。看起来就是这样(由于我在函数中处理非常具体的数据,因此我无法提供一个最小的工作示例,但我的问题更多是关于常规的东西)。
def foo(data):
fig, ax= plt.subplots()
...
return fig
此功能可以很好地工作,如果我想显示图片,我只要打{{1}}就可以了。
我的问题是,我愿意在代码的另一部分(不在同一文件中)在更一般的图中使用该图。例如,我可能想将foo(data).show()
,foo(data1)
和foo(data2)
放在同一matplotlib图中的行中。
实际上,我不知道是否可以在Matplotlib中做到这一点,以及如何做到这一点。
答案 0 :(得分:0)
在函数外部创建fig
和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