当前位置:  开发笔记 > 编程语言 > 正文

使用matplotlib并排绘制图像

如何解决《使用matplotlib并排绘制图像》经验,为你挑选了3个好方法。

我想知道我如何能够使用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])

但我似乎无法让其他图像显示出来.我认为必须有一个更好的方法来做到这一点,因为我想象试图管理索引将是一个痛苦.我查看了文档,虽然我有一种感觉,我可能会看错了.有人能够给我一个例子或指出我正确的方向吗?



1> ImportanceOf..:

你所面临的问题是,你尝试分配的收益imshow(这是一个matplotlib.image.AxesImage对现有的轴对象.

将图像数据绘制到不同轴的正确方法axarr

f, axarr = plt.subplots(2,2)
axarr[0,0].imshow(image_datas[0])
axarr[0,1].imshow(image_datas[1])
axarr[1,0].imshow(image_datas[2])
axarr[1,1].imshow(image_datas[3])

所有子图的概念都相同,并且在大多数情况下,轴实例提供的方法与pyplot(plt)接口相同.例如,如果ax是您的子绘图轴之一,用于绘制法线图,ax.plot(..)而不是使用plt.plot().实际上,这可以在您链接到的页面的源代码中找到.



2> 小智..:

您正在一个轴上绘制所有图像.您想要的是单独获取每个轴的手柄并在那里绘制图像.像这样:

fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax1.imshow(...)
ax2 = fig.add_subplot(2,2,2)
ax2.imshow(...)
ax3 = fig.add_subplot(2,2,3)
ax3.imshow(...)
ax4 = fig.add_subplot(2,2,4)
ax4.imshow(...)

有关详细信息,请查看此处:http://matplotlib.org/examples/pylab_examples/subplots_demo.html

对于复杂的布局,您应该考虑使用gridspec:http://matplotlib.org/users/gridspec.html



3> YellowPillow..:

我发现使用一件事很有帮助:

_, axs = plt.subplots(n_row, n_col, figsize=(12, 12))
axs = axs.flatten()
for img, ax in zip(imgs, axs):
    ax.imshow(img)
    plt.show()

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有