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)