Python 来自gdal光栅的多个matplotlib轴

Python 来自gdal光栅的多个matplotlib轴,python,numpy,matplotlib,gdal,Python,Numpy,Matplotlib,Gdal,我在使用matplotlib在一个图形中绘制多个光栅时有点卡住了。 我有一个到光栅的6条路径的列表,我会用3x2子图制作一个图。我不确定哪种matplotlib方法最适合这种情况。此外,我还有一个问题,我不知道如何为所有绘图制作一个单一的色条/图例 我有点混乱的代码现在看起来像这样,但感觉不是很好 fig, axs = plt.subplots(3, 2, figsize=(18, 10)) i = 0 j = 0 fig.suptitle("Multiple Images") for c,

我在使用matplotlib在一个图形中绘制多个光栅时有点卡住了。 我有一个到光栅的6条路径的列表,我会用3x2子图制作一个图。我不确定哪种matplotlib方法最适合这种情况。此外,我还有一个问题,我不知道如何为所有绘图制作一个单一的色条/图例

我有点混乱的代码现在看起来像这样,但感觉不是很好

fig, axs = plt.subplots(3, 2, figsize=(18, 10))
i = 0
j = 0

fig.suptitle("Multiple Images")

for c, img in enumerate(imgs):
    name = img.split(os.sep)[1]
    gdalobj = gdal.Open(img, gdal.GA_ReadOnly)
    img_array = gdalobj.GetRasterBand(2).ReadAsArray()
    if c < 2:
        axs[0,c].imshow(img_array, cmap="gray")
        axs[0,c].set_title(name)
    elif 2 <= c < 4:
        axs[1,i].imshow(img_array, cmap="gray")
        axs[1,i].set_title(name)
        i+=1
    else:
        axs[2,j].imshow(img_array, cmap="gray")
        axs[2,j].set_title(name)
        j+=1
fig,axs=plt.子批次(3,2,figsize=(18,10))
i=0
j=0
图suptitle(“多幅图像”)
对于c,枚举中的img(imgs):
name=img.split(os.sep)[1]
gdalobj=gdal.Open(img,gdal.GA_只读)
img_array=gdalobj.GetRasterBand(2).ReadAsArray()
如果c<2:
axs[0,c].imshow(img_数组,cmap=“gray”)
axs[0,c]。设置标题(名称)

elif 2通过迭代axis对象的平坦数组,可以将混乱的代码简化为以下内容。例如,对于颜色栏,您可以参考现有的帖子


伟大的谢谢。你确定要到枚举并记下zip吗?@LeKo:啊,对不起,是的,是zip。太多的困惑:太多了!!非常有帮助:)我之前试过一点
zip
,但还是没能想清楚。现在它工作了!
flatte()
确实起到了作用。永远不会找到这个…@LeKo:你也可以使用
axs.ravel()
。它在这方面也做同样的工作。你可以阅读
for ax, img in zip(axs.flatten(), imgs):
    name = img.split(os.sep)[1]
    gdalobj = gdal.Open(img, gdal.GA_ReadOnly)
    img_array = gdalobj.GetRasterBand(2).ReadAsArray()
    ax.imshow(img_array, cmap="gray")
    ax.set_title(name)