问题描述
我使用 RStoolBox 包中的 ggRGB()
制作了卫星图像的 RGB 合成图像。我想为图像添加一个比例尺,但我不知道如何做到这一点。在 R 中使用 scalebar()
时,我通常会使用 ggsn 包中的 ggmaps()
,但看起来它不能处理 RasterBrick 对象,就像 ggRGB()
需要的输入一样。
这是一个例子:
library(raster)
library(ggplot2)
library(RStoolBox)
data(lsat)
ggRGB(img = lsat,r = 3,g = 2,b = 1,stretch = 'hist') +
blank() # eliminate x and y axes
这会产生以下图像:
ggRGB(img = lsat,stretch = 'hist') +
blank() +
ggsn::scalebar(lsat,dist = 2,dist_unit = "km",transform = TRUE,model = "wgs84",location = "upperright")
这将返回错误:“.local(x,...) 中的错误:图层名称无效”
任何帮助将不胜感激。如果可能,我想坚持使用 ggRGB()
,但如果我可以在图像上放置比例尺,我会接受其他绘图方法。
解决方法
您可以使用包 ggspatial
ggRGB(img = lsat,r = 3,g = 2,b = 1,stretch = 'hist') +
theme_void() +
ggspatial::annotation_scale(location = "tr",width_hint =0.5,pad_x = unit(0.7,"cm"))
如果您想对外观进行更精细的控制,此答案中还提供了一种稍微冗长但高度可定制的方法https://stackoverflow.com/a/39069955/2761575