我有一个返回Figure对象的外部函数,在这种情况下,每个Figure对象都只由一个Axes对象组成。 我想组成一个由这两个数字组成的新数字(比方说水平连接)。
理想情况下,我想说:
fig1, fig2, joined = CreateFig( data1 ), CreateFig( data2 ), Figure()
subp1, subp2 = joined.add_subplot( 121 ), joined.add_subplot( 122 )
subp1, subp2 = fig1.get_axes()[0], fig2.get_axes()[0]
joinedFig.savefig( 'joined.eps' )
显然,这不起作用,因为检索的轴属于fig1和fig2,未加入图。 这些轴也不能仅由copy.deepcopy()复制。
在我的例子中,我指的是figure.Figure()实例化。虽然搜索确实让我看到pyplot.figure()是开发团队推荐的实例化技术,但它并没有改变这个问题:有没有办法通过复制Axes的组合来进行Axes / Figure复制构造和图形构造?
答案 0 :(得分:3)
可以修改CreateFig
吗?如果是这样,有一个简单的解决方案:首先创建所需的图形和轴,然后将轴传递到CreateFig
,让CreateFig
操纵axes
对象:
import matplotlib.pyplot as plt
import numpy as np
def CreateFig(data, ax):
ax.plot(data)
fig, axs = plt.subplots(1, 2)
data = np.sin(np.linspace(0,2*np.pi,100))
CreateFig(data, axs[0])
data = np.linspace(-2,2,100)**2
CreateFig(data, axs[1])
plt.show()