使用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真的不可能吗?
答案 0 :(得分:1)
如果我对问题的理解正确,那么在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