2013-01-13 128 views
2

我有一個外部函數返回一個Figure對象,在這種情況下,每個Figure對象都由一個Axes對象組成。 我想組成一個由這兩個數字組成的新圖(假設水平連接)。合併兩個matplotlib figure.Figure或axes.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,不joinedFig。 軸也不能僅由copy.deepcopy()複製。

在我的例子中,我指的是figure.Figure()實例化。雖然搜索引導我看到pyplot.figure()是開發團隊推薦的實例化技術,但它並沒有改變問題:是否有任何方法通過複製軸的組合來完成軸/圖複製構造和圖構造?

回答

2

你能修改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() 

enter image description here