matplotlib:如何返回一个matplotlib对象并将其作为子图绘制?

13

我查看了这个Stack Overflow的问题 Matplotlib返回绘图对象,但它并不完全符合我的问题。

我想做的是:

def func1():
   fig1 =  plt.plot (np.arange(0.0, 5.0, 0.1))
   return fig1

def func2()
   return plt.plot (np.arange(0.0, 5.0, 0.02))


fig1 = func1()
fig2 = func2()
plt.figure()
plt.add_subplot(fig1)
plt.add_subplot(fig2)
plt.show()

以上的代码只是一个主要的想法。你能建议我该如何做吗?

谢谢


你可以考虑将 Axis 对象传递给绘图函数,而不是返回类似于 fig 对象的东西。 - taras
1个回答

13

这个想法是让你的函数绘制到一个坐标轴上。你可以将这个坐标轴作为参数提供给函数,或者让函数使用当前的坐标轴。

结果为:

这个想法是让你的函数绘制到一个坐标轴上。你可以将这个坐标轴作为参数提供给函数,或者让函数使用当前的坐标轴。

import matplotlib.pyplot as plt
import numpy as np

def func1(ax=None):
    ax = ax or plt.gca()
    line, = ax.plot (np.arange(0.0, 5.0, 0.1))
    return line

def func2(ax=None):
    ax = ax or plt.gca()
    line, = ax.plot (np.arange(0.0, 5.0, 0.02))
    return line


fig, (ax1,ax2) = plt.subplots(ncols=2)
func1(ax1)
func2(ax2)

plt.show()

那么反过来就不可能吗? - MasterScrat
@MasterScrat 不,很少有事是不可能的。但是matplotlib并不是设计用于在图形之间复制艺术家的。因此,任何其他解决方案都变得非常复杂(并且不受支持)。请参见此答案中的原则-这个原则现在可能已经不再适用了。 - ImportanceOfBeingErnest

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接