r - 未指定美学时使用 geom_sf 绘制图例
问题描述
使用 ggplot/geom_sf 绘制地图时,任何映射到美学的图层都会在图例中表示。我也知道 usingshow.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 真的不可能吗?
解决方案
如果我正确理解了这个问题,如果您在以下位置指定填充颜色,它应该可以工作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
推荐阅读
- java - 如何在不使用可比较和比较器接口的情况下对地图进行排序?如何编写自定义排序?
- r - 按列号从旧数据帧制作新数据帧
- regex - [ABC]、ABC 和 ABCxx 等模式的正则表达式,其中 xx 是数字
- ruby-on-rails - Rails:执行查询时出现 ORA-00911 错误,复制和粘贴时不出现
- matlab - 在 Matlab 图中动态绘制数据
- node.js - 如何将文件上传到 REST 端点?
- robotframework - 我的机器人框架 jar 文件在 maven install 命令后具有依赖项显示为损坏文件,请协助
- python - pd.get_dummies() 用于具有多索引列的 DataFrame
- python-3.x - 如何仅将文件名(不是整个直接名称+文件名)上传到谷歌存储桶
- python - 从不可逆的函数中查找多个插值 x 值