You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入MNIST手写数字数据集绘制子图时底部总是缺失一个子图的原因是什么

问题原因

子图缺失是plt.tight_layout()的调用位置错误导致的:plt.tight_layout()的作用是一次性自动适配当前所有子图的间距、边距到画布范围,仅需在所有子图创建完成后调用一次即可。你将该方法放在了子图绘制的循环内部,每新增一个子图就会触发一次布局重算,多次迭代后的累积偏移会把最底部的子图挤出画布可视范围。

修复方案

将plt.tight_layout()从循环内移到所有子图绘制完成后、plt.show()之前调用即可,修正后代码如下:

import keras
from keras.datasets import mnist
import matplotlib.pyplot as plt
(X_train, y_train), (X_test, y_test) = mnist.load_data()
fig = plt.figure(figsize=(8,8))
n = 0
for i in range(5):
    for j in range(5):
        plt.subplot(5, 5, i*5 +j +1)
        plt.imshow(X_train[n], cmap='Greys')
        plt.title("Digit:{}".format(y_train[n]))
        n += 1
# 所有子图绘制完成后统一调整布局
plt.tight_layout()
plt.show()

如果调整后仍觉得布局效果不理想,可以额外通过plt.subplots_adjust()自定义边距,按需调整bottom参数即可:

plt.tight_layout()
# 数值越大底部留白越多,可根据实际显示效果调整
plt.subplots_adjust(bottom=0.1)
plt.show()

内容的提问来源于stack exchange,提问作者4daJKong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:06:01