Столбики погрешностей на диаграмме с накоплением областей с ggplot2

Я хотел бы добавить полосы ошибок на диаграмме с накоплением областей, созданной с помощью ggplot2.

Мой CSV-файл выглядит так:

Day  Cat  Val   Error  
0    A    0     0.00  
0    B   44.77  1.16  
0    C   54.64  0.88  
13   A   1.34   0.32  
13   B   22.78  0.45  
13   C   38.33  2.12  
19   A   1.95   0.35  
19   B   24.00  2.25  
19   C   40.30  3.86

Я пробовал это:

ggplot(data=mydata, aes(x=Day,y=Val, group=Cat, fill=Cat,colour=Cat, ymax=Val + Error,   ymin= Val - Error)) +
 geom_area() +
 geom_errorbar(width=.5, color="black")

А у меня было так:

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

Я доволен частью графика с областями, но столбцы ошибок не сложены в точках данных.

Я только начинаю работать с R и действительно не знаю, в чем проблема.

Кроме того, я нашел этот совет, в котором используется geom_segment, чтобы избежать перекрытия между столбцами. , но мне не удалось использовать его с этим кодом.

Спасибо за помощь !


person Mini Kitkat    schedule 17.04.2013    source источник
comment
Я отредактировал первое сообщение :)   -  person Mini Kitkat    schedule 18.04.2013


Ответы (1)


Вы складываете свои данные, но не свои погрешности. Чтобы вычислить сложенную версию ymin и ymax погрешностей, вы можете использовать функцию ddply пакета plyr.

library(plyr) 
mydata2 <- ddply(mydata,.(Day),transform,ybegin = cumsum(Val) - Error,yend = cumsum(Val) + Error)   

ggplot(data=mydata2, aes(x=Day,y=Val, fill=Cat)) +
     geom_area() +
     geom_errorbar(aes(ymax=ybegin , ymin= yend ),width=.5, color="black") 

Выход:

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

person Jonas Tundo    schedule 18.04.2013
comment
Спасибо за код! Это работает с моими данными, но я получаю 4 раза это сообщение об ошибке: Удалено 2 строки, содержащие отсутствующие значения (geom_path). Я думаю, это связано с тем, что столбец «Ошибка» содержит несколько 0. - person Mini Kitkat; 18.04.2013
comment
Предупреждающее сообщение, я думаю (я использую французскую версию R) - person Mini Kitkat; 18.04.2013