У меня есть пара файлов пространственных форм с различными маршрутами общественного транспорта, и я хотел бы создать карту, используя библиотеки ggplot2
и sf
. Проблема здесь в том, что я вручную назначаю цвета нескольким конкретным маршрутам, но мне не удалось добавить легенду к сюжету.
Есть идеи, как это сделать с помощью geom_sf
?
Воспроизводимый пример
library(sf)
library(ggplot2)
# reproducible data
lon<-c(5.121420, 6.566502, 4.895168, 7.626135)
lat<-c(52.09074, 53.21938, 52.37022, 51.96066)
cities<-c('utrecht','groningen','amsterdam','munster')
size<-c(300,500,1000,50)
xy.cities<-data.frame(lon,lat,cities,size)
# line example
line1 <- st_linestring(as.matrix(xy.cities[1:2,1:2]))
line2 <- st_linestring(as.matrix(xy.cities[3:4,1:2]))
lines.sfc <- st_sfc(list(line1,line2))
simple.lines.sf <- st_sf(id=1:2,size=c(10,50),geometry=lines.sfc)
# plot
ggplot() +
geom_sf(data= subset(simple.lines.sf, id==1), color="red" ) +
geom_sf(data= subset(simple.lines.sf, id==2), color="blue" )
Я знаю, что можно было бы сделать что-то вроде этого:
ggplot() +
geom_sf(data= subset(simple.lines.sf, id>0), aes(color=factor(id)) ) +
scale_color_manual(values=c("red", "blue"),
labels=c("route 1", "route 2"))
Однако я работаю с более чем одним шейп-файлом, поэтому мне нужно использовать более одного geom_sf
. Кроме того, я хотел бы, чтобы легенда выглядела как линейная легенда, а не как легенда многоугольника.