【问题标题】:how to remove "empty" space between subplots?如何删除子图之间的“空白”空间?
【发布时间】:2015-04-09 02:55:25
【问题描述】:

我正在制作一个共有 68 个子图的图形,并希望删除它们之间的空白空间。这是我所拥有的:

.

我该怎么做呢?

编辑:使用 plt.tight_layout() 会使情况变得更糟:

这是我的代码:

for j in range(0,len(sort_yf)):
for i in range(0,len(yf)):
    if yf[i]==sort_yf[j]:
        sort_ID=np.append(sort_ID,'output/'+ID[i]+'.png')
for i in range (1,69):
    plt.subplot(17,4,i,aspect='equal')
    plots=img.imread(sort_ID[i])
    plt.imshow(plots)
    plt.axis('off')
plt.show()

【问题讨论】:

  • 我猜这个问题的答案是here,因为这里的答案都不是真正有用的。

标签: python matplotlib plot subplot imshow


【解决方案1】:

您尝试过紧凑的布局功能吗?

plt.tight_layout()

另见HERE

编辑:或者,您可以使用gridspec

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
images = [np.random.rand(40, 40) for x in range(68)]
gs = mpl.gridspec.GridSpec(17, 4)
gs.update(wspace=0.1, hspace=0.1, left=0.1, right=0.4, bottom=0.1, top=0.9) 
for i in range(68):
    plt.subplot(gs[i])
    plt.imshow(images[i])
    plt.axis('off')
plt.show()

【讨论】:

  • 您好,刚刚尝试过,不幸的是它没有用。由于某种原因,它似乎使问题变得更糟。
  • 情况如何变得更糟?此外,您可以修改示例代码 sn-p 以便可以执行 in 吗?例如,您没有指定sort_yf
  • 每张图片实际上都变小了,我会上传一张我的意思的图片。我真的不能,因为它需要一个 csv 文件和一个包含相当大的图像的文件夹。
  • 我猜 gridspec 可能适用于您的情况,请参阅我对帖子的编辑
【解决方案2】:

调整子图周围的空白:

plt.subplots_adjust(wspace=0.01,hspace=0.01)

在我的示例中,我只是修改了 wspace 和 hspace。您还可以调整位置。考虑documentation

您也可以修改GridSpec Layout

【讨论】:

    猜你喜欢
    • 2012-09-25
    • 2017-04-25
    • 1970-01-01
    • 2020-03-19
    • 2020-06-11
    • 2021-12-15
    • 2013-05-01
    • 2015-10-10
    • 2021-11-19
    相关资源
    最近更新 更多