将比例尺添加到使用 ggRGB 制作的地图
Adding scale bar to map made with ggRGB
我使用 RStoolbox 包中的 ggRGB()
制作了卫星图像的 RGB 合成图像。我想为图像添加一个比例尺,但我不知道该怎么做。在 R 中使用 ggmaps()
时,我通常会使用 ggsn 包中的 scalebar()
,但它看起来不像可以处理 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,
r = 3,
g = 2,
b = 1,
stretch = 'hist') +
blank() +
ggsn::scalebar(lsat, dist = 2, dist_unit = "km",
transform = TRUE, model = "WGS84", location = "upperright")
这 returns 一个错误:“.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"))
如果你想对外观进行更精细的控制,这个答案中也给出了一个稍微冗长但高度可定制的方法
我使用 RStoolbox 包中的 ggRGB()
制作了卫星图像的 RGB 合成图像。我想为图像添加一个比例尺,但我不知道该怎么做。在 R 中使用 ggmaps()
时,我通常会使用 ggsn 包中的 scalebar()
,但它看起来不像可以处理 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,
r = 3,
g = 2,
b = 1,
stretch = 'hist') +
blank() +
ggsn::scalebar(lsat, dist = 2, dist_unit = "km",
transform = TRUE, model = "WGS84", location = "upperright")
这 returns 一个错误:“.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"))
如果你想对外观进行更精细的控制,这个答案中也给出了一个稍微冗长但高度可定制的方法