ggplot2: добавить среднеквадратические значения двух моделей к каждому фасету

Используя этот data.frame

ДАННЫЕ

#import_data
df <- read.csv(url("https://www.dropbox.com/s/1fdi26qy4ozs4xq/df_RMSE.csv?raw=1"))

и этот сценарий

library(ggplot2)
ggplot(df, aes( measured, simulated, col = indep_cumulative))+
  geom_point()+
  geom_smooth(method ="lm", se = F)+
  facet_grid(drain~scenario)

Я получил этот сюжет

я хочу добавить RMSE для каждой из двух моделей (независимой и накопительной; только два значения) слева вверху в каждом фасете.

Я старался

geom_text(data = df , aes(measured, simulated, label= RMSE))

Это привело к добавлению значений RMSE к каждой точке фасетов.

Я буду признателен за любую помощь с добавлением двух значений RMSE только в верхнем левом углу каждого фасета.

1 ответ

Решение

Если вы хотите построить два числа на фасете, вам нужно подготовить некоторые данные, чтобы избежать наложения текста.

library(dplyr)
df <- df %>%
  mutate(label_vjust=if_else(indep_cumulative == "accumulative",
                             1, 2.2))

В своем вопросе вы прямо сказали ggplot2 добавить label=RMSE в точках с x=measured а также y=simulated, Чтобы добавить метки в верхнем левом углу, вы можете использовать x=-Inf а также y=Inf, Так что код будет выглядеть так:

ggplot(df, aes(measured, simulated, colour = indep_cumulative)) +
  geom_point() +
  geom_smooth(method ="lm", se = F) +
  geom_text(aes(x=-Inf, y=Inf, label=RMSE, vjust=label_vjust),
            hjust=0) +
  facet_grid(drain~scenario)

введите описание изображения здесь

Другие вопросы по тегам