独立したスクリプトによって生成されたいくつかの図があり、各パネルのカスタム軸 (位置とサイズ) を使用して 1 つの複雑な図にまとめたいと考えています。これまでのところ、このアプローチは 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() によって作成された最終的な図 (残念ながら、初心者としてここに貼り付けることができません) には、この図に少なくとも 2 つの問題があります。 () インスタンス (2) - メインの図にひとまとめにすると、元の図は 1.0 までのデータ範囲で切り取られているように見えます (x 軸は 2.0 まで上昇します) (3) - 次に、軸の位置が完全にねじ込まれています。 ..
私は何を間違っていますか?
よろしくお願いします。
M