【问题标题】:Why did it always missing one subplot when I import mnist digits dataset?为什么我在导入 mnist 数字数据集时总是缺少一个子图?
【发布时间】:2022-01-12 04:56:03
【问题描述】:

我想导入 mnist 数字位数以显示在一个数字中,以及这样的代码,

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()

但是,无论我更改行和列,它总是在底部缺少一个子图,就像那样 不知道这里发生了什么……

【问题讨论】:

    标签: python image matplotlib figure mnist


    【解决方案1】:

    我也能够重现这个错误。它似乎与您在循环中应用的plt.tight_layout() 有关。与其这样做,不如先使用plt.subplots 生成轴对象,然后迭代这些对象。绘制完所有内容后,在打开的图上使用tight_layout

    import keras
    from keras.datasets import mnist
    import matplotlib.pyplot as plt
    (X_train, y_train), (X_test, y_test) = mnist.load_data()
    fig, axes = plt.subplots(nrows=5, ncols=5, figsize=(8,8))
    for i, ax in enumerate(axes.flat):
        ax.imshow(X_train[i], cmap='Greys')
        ax.set_title("Digit:{}".format(y_train[i]))
    fig.tight_layout()
    plt.show()
    

    我们现在得到了预期的结果:

    【讨论】:

      猜你喜欢
      • 2018-07-13
      • 1970-01-01
      • 2018-08-11
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 2018-09-25
      相关资源
      最近更新 更多