首页 > 解决方案 > 在 Python 中制作奇数个子图

问题描述

我对 Python 很陌生,我想在一个图中绘制 13 个不同的图形。为了很好地做到这一点,我想在 6x2 网格中绘制前 12 个图形(这很好用),然后在其下方绘制第 13 个图形;与其他图形大小相同并居中,或大于其余图形,使其宽度等于其他图形宽度的两倍并且所有边缘对齐。使用 指定这种轴的最佳方法是subplots什么?(到目前为止,我刚刚使用过nrows=6, ncols=2,但我认为这样的东西不适用于要绘制的奇数个图形。)到目前为止,我绘制前 12 个图的代码看起来像这样(使用简单的测试数据):

fig, axes = plt.subplots(nrows=6, ncols=2, figsize=(45,10))
for ax in axes.flat:
   ax.plot([1,2,3,4])
fig.subplots_adjust(right=0.5)

如何在其他数字下方添加第 13 个数字?

标签: pythonplot

解决方案


您可以使用GridSpec(链接到文档)来生成灵活的轴布局。

以下代码创建所需的布局并将所有Axes对象放在列表中以便于访问。

gs00 = matplotlib.gridspec.GridSpec(7, 2)

fig = plt.figure()
axs = []
for i in range(6):
    for j in range(2):
        ax = fig.add_subplot(gs00[i,j])
        axs.append(ax)
ax = fig.add_subplot(gs00[6,:])
axs.append(ax)

在此处输入图像描述


推荐阅读