如何让geom_sf()生成的地图白色边框匹配绘图背景色?
解决
geom_sf()地图白色边框问题 这个白色边框的本质是绘图面板(panel)的背景色:当geom_sf自动维持地图宽高比时,面板中地图未覆盖的空白区域会显示面板背景色,即使你设置了plot.background的填充色,这部分区域仍会保持默认白色(或主题默认色)。以下是两种无需手动设置宽高、不扭曲地图的解决方案:
方案一:统一面板与绘图背景色
直接将panel.background的填充色设置为和plot.background一致,让面板空白区域与整体背景色统一:
library(ggplot2) library(sf) nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE) # 自定义背景示例 ggplot(nc) + geom_sf(aes(fill = AREA)) + theme_void() + theme( plot.background = element_rect(fill = "grey30"), panel.background = element_rect(fill = "grey30", color = NA) # color=NA移除面板边框 ) # ggthemes适配示例 library(ggthemes) ggplot(nc) + geom_sf(aes(fill = AREA)) + ggthemes::theme_wsj() + theme(panel.background = element_rect(fill = theme_wsj()$plot.background$fill, color = NA))
方案二:移除地图周围空白区域
使用coord_sf(expand = FALSE)关闭自动扩展的空白区域,让地图直接撑满整个面板,从根源上消除空白:
ggplot(nc) + geom_sf(aes(fill = AREA)) + theme_void() + theme(plot.background = element_rect(fill = "grey30")) + coord_sf(expand = FALSE)
该方法无需调整宽高,完全适配批量生成地图的需求,且不会扭曲地图比例。
内容的提问来源于stack exchange,提问作者Léa
相关产品推荐
相关产品推荐

