2014-07-09 75 views
0

我试图在顶部保存一个带有额外图像的图形。 但是,Python只保存底部数字。 我:用add_axes保存matplotlib图形

fig = plt.figure(figsize=(8, 6)) 
ax = fig.add_subplot(111) 

ax.plot(...) 
... 

ax_im = fig.add_axes([0.1, 1.0, 1, 1]) 
ax_im.set_xticks([]) 
ax_im.set_yticks([]) 

ax.imshow(...) 
... 

fig.savefig('image.png') 

和Matplotlib只保存有关ax轴的身影。在iPython笔记本 输出是好的,它显示了两个数字,所以,我不知道发生了什么。

+0

我发现'fig.savefig( 'image.png',bbox_inches ='紧')'解决了这个问题。 –

回答

1

尝试这样的事情

ax_im = fig.add_axes([0.1, 0.2, 0.5, 0.5], label='axes1') 

的解释是,你要add_axes秒参数为1.0。这指定了图顶部的Axes的底部。

以下示例适用于我:

import pylab as plt 

fig = plt.figure(figsize=(8, 6)) 
ax = fig.add_subplot(212) 

ax.plot(range(3)) 

ax_im = fig.add_axes([0.3, 0.5, 0.5, 0.4]) 
ax_im.set_xticks([]) 
ax_im.set_yticks([]) 

plt.show() 

或更容易,使用add_subplot两次:

import pylab as plt 

fig = plt.figure(figsize=(8, 6)) 
ax = fig.add_subplot(212) 

ax.plot(range(3)) 

ax_im = fig.add_subplot(211) 
ax_im.plot(range(3), 'o--') 
ax_im.set_xticks([]) 
ax_im.set_yticks([]) 

plt.show() 
+0

但我想要第二个图在顶部,这就是为什么我指定第二个值为'1.0'。如果我使用'0.2',则第二个图位于第一个图形的中间。正如我所指出的,它在iPython输出中看起来很好:) –

+0

'fig.savefig'只打印0和1之间的区域。如果要将第二个打印在最上面,则必须显示第一个打印在下部。我更新了这个例子。这里'add_subplot'是用'212'调用的。第二个轴从第一个轴的0.5开始。 – Holger

+0

是的,我也在想,似乎是一个更好的选择。但是我发现了我在评论中发布的解决方案。不管怎么说,还是要谢谢你 :) –