为什么导入 mnist 数字数据集时总是漏掉一个子图?
Why did it always missing one subplot when I import mnist digits dataset?
我想导入 mnist digits 数字以显示在一个数字中,并且这样的代码,
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.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()
我们现在得到了预期的结果:
我想导入 mnist digits 数字以显示在一个数字中,并且这样的代码,
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.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()
我们现在得到了预期的结果: