如何将多个pyplot图形排列成一种布局?

10 投票
1 回答
12219 浏览
提问于 2025-04-17 13:15

我创建了一个软件,用来进行信号分析。这个软件有很多功能,每个功能最后都会显示一个复杂的图形,里面包含标签、图表、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])

enter image description here

撰写回答