python rio.plot.show 上的颜色条?

wqsoz72f  于 2023-02-02  发布在  Python
关注(0)|答案(4)|浏览(120)

如何在使用www.example.com后添加颜色条rio.plot.show?我尝试了很多方法,但都出现了各种错误
我试过一种方法:

fig, ax = plt.subplots(figsize = (16, 16))

retted = rio.plot.show(ds, ax=ax, cmap='Greys_r')  

fig.colorbar(retted, ax=ax)
plt.title("Original")
plt.show()

这有错误:AttributeError: 'AxesSubplot' object has no attribute 'get_array'

ibps3vxo

ibps3vxo1#

我做了上面david建议的事情,它起作用了!

fig, ax = plt.subplots(figsize=(5, 5))

# use imshow so that we have something to map the colorbar to
image_hidden = ax.imshow(image_data, 
                         cmap='Greys', 
                         vmin=-30, 
                         vmax=30)

# plot on the same axis with rio.plot.show
image = rio.plot.show(image_data, 
                      transform=src.transform, 
                      ax=ax, 
                      cmap='Greys', 
                      vmin=-30, 
                      vmax=30)

# add colorbar using the now hidden image
fig.colorbar(image_hidden, ax=ax)
htrmnn0y

htrmnn0y2#

plt.imshow()和www.example.com()返回了不同的对象rasterio.plot.show。plt.colorbar()期望的是一个可Map的对象,所以会混淆。因为rasterio绘图是matplotlib的 Package 器,我认为最直接的方法是提供maptlotlib期望的底层对象。

retted = rio.plot.show(ds, ax=ax, cmap='Greys_r')
im = retted.get_images()[0]
fig.colorbar(im, ax=ax)
wnvonmuf

wnvonmuf3#

我同意这个解决方案,但我想补充的是,如果你像我一样,我通常有一个rasterio datasetreader对象(使用rasterio.open阅读地理参照栅格数据的结果),而不仅仅是一个原始的numpy数组。因此,对于rasterio v1.1.8,我必须执行从datastreader对象中提取numpy数组的额外步骤。例如,对于单个波段:

dem = rasterio.open("GIS/anaPlotDEM.tif")
fig, ax = plt.subplots(figsize=(10,10))
image_hidden = ax.imshow(dem.read()[0])
fig.colorbar(image_hidden, ax=ax)
rasterio.plot.show(dem, ax=ax)

(我想把这个作为评论加进去,但是没有信誉积分)

kninwzqo

kninwzqo4#

如果数据使用不同的坐标系。当你添加隐藏图像时,你改变了x轴和y轴。添加下面的代码将解决:

# set the plot boundary to data.bounds
ax.set_xlim(data.bounds.left, data.bounds.right)
ax.set_ylim(data.bounds.bottom, data.bounds.top)

相关问题