我正在用两组线绘制sf
和ggplot2
的Map。一组行有一列值,我正在匹配“颜色”美学。另一组线我想都是白色的(Map的背景是黑色的)。
我希望图例在黑色背景上显示白色,以及在白色背景上显示彩色线。似乎element_rect只能放在主题部分,而不是guides/override. aes。
我怎样才能让一条白色穿过一个黑色的盒子,而“lines 1”几何体的背景是白色的?
可复制代码:
library(sf)
library(geosphere)
library(ggplot2)
nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE)
a<-st_coordinates(st_centroid(nc[1:10,]))
b<-st_coordinates(st_centroid(nc[91:100,]))
c<-st_coordinates(st_centroid(nc[21:30,]))
d<-st_coordinates(st_centroid(nc[81:90,]))
lines1<-gcIntermediate(a,b,sp = TRUE)
lines1<-st_as_sf(lines1)
lines1$col <- rep(c("A","B"),5)
lines2<-gcIntermediate(c,d,sp = TRUE)
lines2<-st_as_sf(lines2)
ggplot()+
geom_sf(data = nc,fill = 'black',color = 'white')+
geom_sf(data = lines1,aes(color = col))+
geom_sf(data = lines2, color = 'white',aes(linetype = "help"))+
theme(legend.key=element_rect(fill="black"))+
scale_color_manual(values = c("darkred","yellow"),
guide = guide_legend(override.aes = list(linewidth = c(4))))
这是我的资料
我想要的是
2条答案
按热度按时间watbbzwu1#
我认为最好的方法是覆盖填充图例(就像在here中一样),但它似乎不适用于
geom_sf
。因此,我将更改key_glyph函数。结果,我得到了这个。
lf5gs5x22#
编辑:
这与@JavierMtzRdz发布的解决方案基本相同(+1)
原始答案:
我无法使用
guides()
或theme()
获得工作解决方案,因此您可能需要针对此用例求助于自定义key_glyph()
,例如。创建于2023-05-24使用reprex v2.0.2