如何用单一颜色填充ggplot2地图中n非零的县并添加标记点
实现方法
当然可以实现这个需求,以下是修改后的R代码:
library("sf") library("tigris") library("ggplot2") me <- counties("Maine", cb=TRUE, class="sf") me$n <- rep(0:3, each = 4) ggplot(me) + # 绘制县多边形,n非零的填充绿色,n=0的填充灰色 geom_sf(aes(fill = n != 0), color = "white") + # 自定义填充颜色,关闭冗余图例 scale_fill_manual(values = c("FALSE" = "gray90", "TRUE" = "green"), guide = "none") + # 在n非零的县中心添加红色标记点 geom_sf(data = subset(me, n != 0), aes(geometry = st_centroid(geometry)), color = "red", size = 3) + theme_void()
关键改动说明:
- 填充颜色设置:通过
fill = n != 0将县分为「n=0」和「n≠0」两类,再用scale_fill_manual指定对应颜色,同时关闭图例避免多余信息。 - 中心标记点:用
subset(me, n != 0)筛选出n非零的县,通过st_centroid(geometry)直接计算这些县的几何中心,再用geom_sf绘制红色标记点,可通过size参数调整点的大小。
内容的提问来源于stack exchange,提问作者Simon Harmel
相关产品推荐
相关产品推荐

