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

时间:2019-03-29 08:54:21

标签: python python-3.x matplotlib

因此,我有一个函数,可以输入一些数据,并返回matplotlib图形。看起来就是这样(由于我在函数中处理非常具体的数据,因此我无法提供一个最小的工作示例,但我的问题更多是关于常规的东西)。

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

此功能可以很好地工作,如果我想显示图片,我只要打{{1​​}}就可以了。

我的问题是,我愿意在代码的另一部分(不在同一文件中)在更一般的图中使用该图。例如,我可能想将foo(data).show()foo(data1)foo(data2)放在同一matplotlib图中的行中。

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

1 个答案:

答案 0 :(得分:0)

在函数外部创建figax,然后将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