我有幾個獨立腳本生成的圖形,我想用每個面板的自定義軸(位置和大小)包含在一個複雜圖形中。我知道這種方法似乎尚未得到matplotlib的支持,但我決定嘗試一下。將圖形的外觀添加到新圖形時不會保留
現在,我可以將每個圖形複製到我想要的面板中,但「複製」的圖形會以某種方式剪切並且軸會混亂。坦率地說,因爲我對matplotlib比較陌生,所以我不知道自己錯過了什麼(例如,在Matlab中,copyobj()會完成這個技巧)。
下面是示例代碼,我使用的測試:
def customfigure(flist,axlist):
# Margins
lm = 0.05
rm = 0.05
bm = 0.05
tm = 0.05
# basic grid
nrow = 2
ncol = 2
# rulers
hr = 0.02
vr = 0.02
# axis width
aw = (1-lm-rm-(ncol-1)*hr)/ncol
# axis height
ah = (1-tm-bm-(nrow-1)*vr)/nrow
# Make axis box
ax = [None]*(ncol*nrow)
ax[0] = [lm,bm,aw,ah]
ax[1] = [lm,bm+ah+vr,aw,ah]
ax[2] = [lm+aw+hr,bm,aw,ah]
ax[3] = [lm+aw+hr,bm+ah+vr,aw,ah]
fig = plt.figure(figsize=(10,6),dpi=80)
# Solution 1
for i in xrange(len(axlist)):
axlist[i].set_position(ax[i])
axlist[i].set_figure(fig)
flist[i].delaxes(axlist[i])
fig.add_axes(axlist[i])
close('all')
fig = [None]*4
ax = [None]*4
x = array([range(10)])
close('all')
fig = [None]*4
ax = [None]*4
t = arange(0.0, 2.0, 0.01)
color = ['k','r','g','b']
for i in xrange(4):
fig[i],ax[i] = plt.subplots()
s = sin(2*(i+1)*pi*t)
plt.plot(t, s,'-',color=color[i])
show()
customfigure(fig,ax)
最後的數字,由customfigure建()(這很遺憾,我不能粘貼在這裏作爲一個新手)在這至少有兩個問題圖: (1) - 複製圖形的大小並不是我期望通過set_position()實例 (2) - 在集中在主圖中時的原始數字,似乎將數據範圍限制爲1.0(而x軸應高達2.0) (3) - 然後確定,軸的位置是完全擰緊的...
我做錯了什麼?
在此先感謝您的幫助。
中號
嗨,約翰,感謝你的好主意,雖然它概述了一種不同的方法。我想先製作數字然後把它們全部放在一個複雜的圖形中的主要原因是因爲一些獨立的數字是由長腳本產生的,這可能需要很長的運行時間。因此,這個想法是首先保存數字,然後從文件中打開它們並將它們集中在一個數字中。我不明白爲什麼這是不可能的。我發現[this](https://www.mail-archive.com/[email protected]/msg06032.html)...但我不知道如何正確地重塑我的數字 – maurizio 2014-09-06 04:15:25