用另一个图中的剪辑框保存图

时间:2014-09-03 11:18:21

标签: python matplotlib

通常,如果使用pyplot中的默认设置绘制两个不同的数字,它们将具有完全相同的大小,并且如果保存可以在PowerPoint等中整齐地对齐。然而,我想生成一个数字,其中有一个图外的图例。我正在使用的脚本如下所示。

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(0,1,201)
y1=x**2
y2=np.sin(x)

fig1=plt.figure(1)
plt.plot(x,y1,label='y1')
handles1,labels1=plt.gca().get_legend_handles_labels()
lgd1=plt.gca().legend(handles1,labels1,bbox_to_anchor=(1.27,1),borderaxespad=0.)

fig2=plt.figure(2)
plt.plot(x,y2)

fig1.savefig('fig1',bbox_extra_artists=(lgd1,),bbox_inches='tight')
fig2.savefig('fig2')

plt.show()

问题是在PowerPoint中,我不能再对齐左边的两个数字并使它们的轴对齐。由于第一个数字使用了'extra artists'和'bbox_inches = tight'参数,因此其边距的宽度与第二个数字不同。

有没有办法将剪辑框从第一个图“转移”到第二个图形,这样它们可以通过PowerPoint中的“左对齐”对齐?

1 个答案:

答案 0 :(得分:1)

我认为实现你想要的更简单的方法就是用两个子图构建一个图形,让matplotlib为你调整一切。

你认为做这样的事情是个好主意吗?

import matplotlib.pyplot as plt
import numpy as np

x=np.linspace(0,1,201)
y1=x**2
y2=np.sin(x)

fig = plt.figure()

a = fig.add_subplot(211)

a.plot(x,y1, label='y1')

lgd1 = a.legend(bbox_to_anchor = (1.27,1), borderaxespad=0.)

a = fig.add_subplot(212)
a.plot(x,y2)

fig.savefig('fig',bbox_extra_artists=(lgd1,),bbox_inches='tight')