2017-01-15 2 views
2

Используя этот data.frameggplot2: добавить RMSE значения двух моделей каждой грани

DATA

#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) 

Я получил этот участок enter image description here

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

Я попытался

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

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

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

ответ

2

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

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) 

enter image description here

+0

@aelwan 'sprintf' /' paste' (вы будете делать лучше в R, если вы на самом деле выглядят некоторые вещи против полагаться на других для? быстрые ответы) – hrbrmstr

+0

@hrbrmstr Спасибо за предложения – aelwan

+0

@aelwan возможно найти другие эстетические параметры для 'geom_text()' как выравнивание текста и подталкивание – hrbrmstr

Смежные вопросы