来自 gdal-rasters 的多个 matplotlib-axes
multitple matplotlib-axes from gdal-rasters
我有点难以使用 matplotlib 在一个图中绘制多个光栅。
我有一个包含 6 条光栅路径的列表,我会用 3x2 子图制作一个图形。我不太确定哪种 matplotlib 方法最适合这个。此外,我还有一个问题,我不知道如何为所有地块制作一个 colorbar/legend 。
我现在有点乱的代码看起来像这样,但感觉不是很好...
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
我真的不认为这是最好的方法,但它确实有效。但是,我想生成一个单一的颜色条,但我不知道该怎么做...
您可以通过遍历扁平化的轴对象数组,将凌乱的代码简化为以下内容。至于彩条,可以参考已有的帖子,比如this one
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)
我有点难以使用 matplotlib 在一个图中绘制多个光栅。 我有一个包含 6 条光栅路径的列表,我会用 3x2 子图制作一个图形。我不太确定哪种 matplotlib 方法最适合这个。此外,我还有一个问题,我不知道如何为所有地块制作一个 colorbar/legend 。
我现在有点乱的代码看起来像这样,但感觉不是很好...
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
我真的不认为这是最好的方法,但它确实有效。但是,我想生成一个单一的颜色条,但我不知道该怎么做...
您可以通过遍历扁平化的轴对象数组,将凌乱的代码简化为以下内容。至于彩条,可以参考已有的帖子,比如this one
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)