Добавьте пользовательскую легенду в ggplot с двумя слоями geom_point, используя шкалу _..._ руководство - PullRequest
4 голосов
/ 06 марта 2020

У меня есть, например, два набора данных: первый набор содержит точки вычисления, а второй содержит координаты сетки. Я хочу построить их, используя ggplot, и хочу, чтобы легенда была такой, как показано ниже:

enter image description here

Данные

df1<- data.frame(lon=c(21:70), lat=c(64:113), tem=c(12:61)) # computation points data
df2<- data.frame(grd.lon=seq(21,70,3.5),grd.lat=seq(12,61, 3.5))  # grid points data
 library(ggplot2)
ggplot()+geom_point(data=df1, aes(x=lon,y=lat), color="black", shape=20, size=3)+
            geom_point(data=df2, aes(x=grd.lon, y=grd.lat), colour="red", shape=3)

Я видел подобные вопросы, но ни один из них не помог мне, я также попытался нарисовать легенду вручную, добавив scale_color_manual и scale_shape_manaul, но все равно не сработал. Любая помощь, пожалуйста

1 Ответ

5 голосов
/ 06 марта 2020

Свяжите свои df в одном, например, так:

df3 <- list("computation point" = df1, "grid points" = df2) %>% 
  bind_rows(.id = "df")

Чем отображать переменные в эстетику. Затем ggplot2 автоматически добавит легенду, которую можно настроить с помощью шкалы _..._ manual:

ggplot(df3, aes(shape = df, color = df)) +
  geom_point(aes(x=lon,y=lat), size=3)+
  geom_point(aes(x=grd.lon, y=grd.lat)) +
  scale_shape_manual(values = c(20, 3)) +
  scale_color_manual(values = c("black", "red")) +
  labs(shape = NULL, color = NULL)

enter image description here

...