我想知道我如何能够使用matplotlib
并排绘制图像,例如:
我得到的最接近的结果是:
这是使用以下代码生成的:
f, axarr = plt.subplots(2,2)
axarr[0,0] = plt.imshow(image_datas[0])
axarr[0,1] = plt.imshow(image_datas[1])
axarr[1,0] = plt.imshow(image_datas[2])
axarr[1,1] = plt.imshow(image_datas[3])
但我似乎无法显示其他图像。我想一定有更好的方法来做到这一点,因为我会想象试图管理索引将是一个痛苦。我已经浏览了文档,虽然我有一种感觉,我可能会看错了。有人能给我提供一个例子或指出我在正确的方向吗?
编辑:
如果希望函数自动确定网格大小,请参见answer from @duhaime。
9条答案
按热度按时间uz75evzq1#
您面临的问题是,您试图分配
imshow
(它是matplotlib.image.AxesImage
)的返回值给现有的axis对象。将图像数据绘制到
axarr
中不同轴的正确方法是对于所有的子图,概念都是一样的,并且在大多数情况下,axis示例提供的方法与pyplot(plt)接口相同。例如,如果
ax
是您的子图轴之一,那么要绘制正常的线图,您应该使用ax.plot(..)
而不是plt.plot()
。实际上,您可以在链接到的页面的源代码中找到它。bvjxkvbb2#
我发现有一件事对打印所有图像很有帮助:
rlcwz9us3#
你在一个轴上绘制所有的图像。你想要的是为每个轴单独获取一个句柄,然后在那里绘制图像。比如:
如需了解更多信息,请访问:http://matplotlib.org/examples/pylab_examples/subplots_demo.html
对于复杂布局,应考虑使用gridspec:http://matplotlib.org/users/gridspec.html
wwwo4jvm4#
如果图像位于数组中,并且您希望循环访问每个元素并打印它,则可以编写如下代码:
还要注意的是,我用的是次要情节,而不是次要情节,它们是不同的
qvk1mo1f5#
下面是一个完整的函数
show_image_list()
,它在网格中并排显示图像。您可以使用不同的参数调用该函数。1.传入一个
list
的图像,其中每个图像都是一个Numpy数组。默认情况下,它将创建一个包含2列的网格。它还将推断每个图像是彩色的还是灰度的。1.传入
list
的图像、每个图像的list
的标题以及其他参数。代码如下:
vptzau2j6#
根据matplotlib's suggestion for image grids:
ivqmmu1c7#
我大概每周都会访问这个网址一次。对于那些想要一个简单的函数来绘制图像网格的人,我们来看看:
nbewdwxp8#
可视化数据集中一个随机图像的示例代码
调用函数
显示给定数据集中的随机图像簇
vyu0f0g19#
标绘数据集中存在的图像这里兰德给出了一个随机索引值,用于选择数据集中存在的随机图像,labels具有每种图像类型的整数表示,labels_dict是一个保存key val信息的字典