当未指定美学时,使用geom_sf绘制图例

3

使用ggplot/geom_sf绘制地图时,任何映射到美学层的图层都会在图例中表示。我还知道可以使用show.legend = ...来强制表示图例,并操纵所使用的符号(点、线、多边形)。然而,当绘制简单对象而不需要将它们进一步映射到美学层,即使用颜色/填充来显示附加信息时,没有给出图例条目。即使使用show.legend = TRUE也是如此。我在GitHub上找到了这个问题:https://github.com/tidyverse/ggplot2/issues/3636。我不太确定提问者是否被正确理解,但似乎没有得到一个好答案。因此,使用他的代码:

library(ggplot2)
library(sf)

nc <- st_read(system.file("shape/nc.shp", package = "sf"))
ggplot(nc) + geom_sf(show.legend = TRUE)

无法生成图例。我希望图例简单地显示与地图中相同颜色的线,并为该图层提供名称。我可以使用以下解决方法添加图例:

ggplot() +
  geom_sf(aes(fill = "US State borders"), nc, show.legend = "line")

然而,这现在改变了所绘制图层的颜色。好的,让我们尝试指定一种颜色:

ggplot() +
  geom_sf(aes(fill = "US State borders"), nc, fill = "grey", show.legend = "line")

糟糕,又丢失了图例,可能是因为我现在已经两次指定了 fill。使用ggplot/geom_sf真的不可能吗?

1个回答

3
如果我理解问题正确的话,您可以在 scale_fill_manual() 中指定填充颜色来实现功能。
  ggplot() +
    geom_sf(aes(fill = "US State borders"), nc, show.legend = "line") +
    scale_fill_manual(values = 'grey') +
    labs(fill = '') # removing legend title

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接