【发布时间】:2017-10-22 13:08:28
【问题描述】:
我想生成 cifar-10 数据集图像的网格样式图。我的代码:
#load the data
(X_train, y_train), (X_test, y_test) = cifar10.load_data()
for i in range(0, 8):
pyplot.subplot(440 + 1 + (i))
pyplot.imshow(toimage(X_train[i]))
pyplot.show()
它适用于所有大小为 3*3 及以上的网格,但如果我将 440 替换为 220 或 110,则会引发以下错误:
文件“main.py”,第 24 行,在 pyplot.subplot(220 + 1 + (i)) 文件“/root/.virtualenvs/keras_tf/lib/python3.5/site-packages/matplotlib/pyplot.py”, 第 1044 行,在子图中 a = fig.add_subplot(*args, **kwargs) 文件“/root/.virtualenvs/keras_tf/lib/python3.5/site-packages/matplotlib/figure.py”, 第 1020 行,在 add_subplot a = subplot_class_factory(projection_class)(self, *args, **kwargs) 文件 “/root/.virtualenvs/keras_tf/lib/python3.5/site-packages/matplotlib/axes/_subplots.py”, 第 64 行,在 init 中 maxn=rows*cols, num=num)) ValueError: num must be 1
我阅读了有关此主题的先前答案,但不知何故,无法弄清楚。可能的原因是什么?以及如何绘制 2*2 的图像网格?
【问题讨论】:
-
如果您查看错误
ValueError: num must be 1 <= num <= 4, not 5,显然您的代码试图绘制第五个子图。一般来说,如果您发布非工作代码,它会更有用。
标签: python python-3.x matplotlib plot