如何将多个pyplot图形排列成一种布局?
我创建了一个软件,用来进行信号分析。这个软件有很多功能,每个功能最后都会显示一个复杂的图形,里面包含标签、图表、axhspan、axvspan等内容……通常,这些功能是单独调用的。我的每个功能都会返回一个图形对象,我可以把它保存成PDF文件。
def Myfunction1(self):
fig = pyplot.figure()
...do somestuff, create my figure
pyplot.show()
fig.savefig('C:\MyFigurefolder\figure1.pdf', dpi=300)
return fig
def Myfunction2(self):
fig = pyplot.figure()
...do some other stuff, create my 2nd figure
pyplot.show()
fig.savefig('C:\MyFigurefolder\figure2.pdf', dpi=300)
return fig
现在,我想创建一个“总结图”,通过进行元分析,把多个图形合并在一起,然后保存成一个最终的PDF。我不太清楚该怎么做。有没有办法使用整个图形对象(或者多个单独的PDF)来制作我的图形呢?
类似于:
def FinalFigure(self):
final = A_Kind_Of_Layout_Or_A_Figure_or_something
a=self.Myfunction1()
b=self.Myfunction2()
Action_to_arrange_a_and_b_like_gridspec
final.savefig('C:\MyFigurefolder\FinalFigure.pdf', dpi=300)
1 个回答
11
你可以用matplotlib.pyplot.subplot把多个图放在一起。如果你想更好地控制这些图的布局,可以看看这个GridSpec。
补充:应要求,下面是链接教程中的一个简单例子:
一个gridspec实例提供了类似数组的(二维或一维)索引,可以返回SubplotSpec实例。如果SubplotSpec跨越多个单元格,可以使用切片。
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(3, 3)
ax1 = plt.subplot(gs[0, :])
ax2 = plt.subplot(gs[1,:-1])
ax3 = plt.subplot(gs[1:, -1])
ax4 = plt.subplot(gs[-1,0])
ax5 = plt.subplot(gs[-1,-2])