如何在R语言geom_sf绘制的地图上添加区域名称标签并调整样式
要在geom_sf绘制的地图上添加区域名称标注,直接使用ggplot2内置的geom_sf_text()(纯文本标签)或geom_sf_label()(带背景框的标签)图层即可,两个图层都会自动读取sf对象中每个多边形的质心作为默认标签位置,无需手动计算坐标。
调整后的完整绘图代码
# 选择2000年数据 de %>% filter(year %in% c(2000)) %>% ggplot()+ geom_sf(aes(fill = eap), color = NA)+ # 新增的标签图层,可根据需求调整参数 geom_sf_text(aes(label = nuts_name), color = "white", # 字体颜色 size = 2.5, # 字号 family = "微软雅黑", # 字体 fontface = 2, # 字重:2为加粗 nudge_y = 5000) + # 标签整体向上偏移5000米(适配当前3035坐标系单位) scale_fill_viridis_b()+ coord_sf(datum = NA)+ theme_map()+ theme(legend.position="right", plot.title = element_text(hjust = 0.5,color = "Gray40", size = 16, face = "bold"), plot.subtitle = element_text(color = "blue"), plot.caption = element_text(color = "Gray60"))+ guides(fill = guide_legend(title = "单位:千人", title.position = "bottom", title.theme =element_text(size = 10, face = "bold",colour = "gray70",angle = 0)))
样式属性调整说明
- 标签内容:通过
aes(label = 变量名)指定,这里直接填写nuts_name即可 - 字体样式调整参数:
size:调整字号,单位为mmcolor:调整字体颜色,可填颜色名称或十六进制色值family:调整字体,可填系统已安装的字体名称,如"宋体""PingFang SC"等fontface:调整字重/风格,1为常规、2为加粗、3为斜体、4为加粗斜体
- 位置调整参数:
nudge_x/nudge_y:按坐标系单位整体偏移标签位置,当前使用的EPSG3035坐标系单位为米,可根据显示效果灵活调整偏移量- 若存在标签重叠问题,可安装
ggrepel包,将geom_sf_text替换为geom_sf_text_repel,函数会自动调整标签位置避免重叠,额外可搭配box.padding参数调整标签间距
- 带背景框的标签配置:将
geom_sf_text替换为geom_sf_label,可额外调整以下属性:fill:标签背景颜色alpha:背景透明度,取值范围0-1label.padding:标签内边距,用法为unit(0.2, "mm")label.r:标签圆角大小,用法为unit(0.1, "mm")
内容的提问来源于stack exchange,提问作者sylvia
相关产品推荐
相关产品推荐

