sf对象大小图例显示异常:BIR74的size图例为何显示矩形而非圆点?
解决ggplot2+sf绘图中size图例显示矩形而非圆点的问题
嘿,这个问题我之前也碰到过!其实根源在于ggplot2对geom_sf的size图例有默认的符号设置——当你用geom_sf绘制点要素(比如你这里的面要素中心点)时,它默认把size图例的符号渲染成了矩形,而不是我们熟悉的圆点样式。
下面给你两种简单的修复方法:
方法一:手动修改图例符号样式
直接用guides()函数指定size图例的符号为圆点,通过override.aes参数覆盖默认设置就行。修改后的代码如下:library(sf) library(ggplot2) nc <- st_read(system.file("shape/nc.shp", package="sf")) nc_centers <- st_centroid(nc) nc_centers %>% ggplot() + geom_sf(aes(color = SID79, size = BIR74)) + coord_sf(datum = NA) + theme_minimal() + # 指定size图例用实心圆点(shape=16),也可换成1等空心圆点样式 guides(size = guide_legend(override.aes = list(shape = 16)))方法二:改用geom_point绘制点
如果你更习惯普通散点图的图例样式,可以先把sf点对象的坐标提取出来,然后用geom_point来绘制。这种方式下size图例自然就是圆点了,代码示例:library(sf) library(ggplot2) nc <- st_read(system.file("shape/nc.shp", package="sf")) nc_centers <- st_centroid(nc) # 提取点的x、y坐标 nc_centers <- nc_centers %>% mutate(x = st_coordinates(.)[,1], y = st_coordinates(.)[,2]) nc_centers %>% ggplot(aes(x = x, y = y)) + geom_point(aes(color = SID79, size = BIR74)) + coord_sf(datum = NA) + theme_minimal()这种方法还能让你更灵活地自定义点的各种样式,适合需要更多个性化设置的场景。
内容的提问来源于stack exchange,提问作者Tdebeus
相关产品推荐
相关产品推荐

