通常,如果使用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中的“左对齐”对齐?
答案 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')