Линейный график r с доверительными полосами и точками меток - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь нарисовать график с полосами доверительного интервала и обозначить эти точки данных.

Это мой набор данных ниже

    x        y        lower     upper
 1991-1995   0.0000   0.00000   0.0000
 1996-2000   1.4920  -0.19782   3.1818
 2001-2005   3.2162   0.97042   5.4620
 2006-2010   7.7719   4.66051  10.8833

Это то, что я пробовал до сих пор

ggplot(df, aes(x, y))+
                  geom_point(color='#E69F00')+
                  geom_line(data=df)+theme_minimal() + 
                  geom_text(aes(label=round(y,4)), vjust=-.5) +
                  geom_ribbon(data=df,aes(ymin= lower,ymax= upper), linetype=2,alpha=0.3)

Я получаю сообщение об ошибке

geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?

Также я не вижу никаких полос CI

Любые предложения о том, как решить эту проблему, очень ценятся.Заранее спасибо.

1 Ответ

0 голосов
/ 14 сентября 2018

Лучший подход - преобразовать x в числовую переменную, чтобы ось x могла быть правильно размещена.tidyr::separate_rows может разделять начальную и конечную даты на разные строки, что позволяет построить все это одной строкой:

library(tidyverse)

df <- data_frame(x = c("1991-1995", "1996-2000", "2001-2005", "2006-2010"), 
                 y = c(0, 1.492, 3.2162, 7.7719), 
                 lower = c(0, -0.19782, 0.97042, 4.66051), 
                 upper = c(0, 3.1818, 5.462, 10.8833))

df %>% 
    separate_rows(x, convert = TRUE) %>% 
    ggplot(aes(x, y, ymin = lower, ymax = upper, label = round(y, 2)[c(TRUE, NA)])) + 
    geom_ribbon(alpha = 0.3) + 
    geom_line() + 
    geom_point() + 
    geom_text(nudge_y = .4)

С этого момента вы можете настраивать много, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...