Как построить диаграмму с накоплением областей для сгруппированных / категоризированных данных в R?

У меня есть набор данных, разбитый на несколько полей. Пример:

Time | CatA | CatB | CatC | Value
--------------------------------- 
1       A      X      P      4 
2       A      X      Q      6 
3       A      Y      R      3 
4       A      Y      P      7 
1       B      X      Q      8 
2       B      X      R      9 
3       B      Y      P      5 
1       A      X      Q      8 
2       A      X      R      2 
3       A      Y      P      6 
4       A      Y      Q      4 
5       A      Y      R      3

Теперь я хочу построить диаграмму с накоплением площадей, чтобы каждый раз, как единица измерения по оси X, я имел соответствующие данные Y в качестве объединенного атрибута категорий. Например: (A, X, P) будет одним стеком графов, (A, X, Q) будет другим, (B, X, P) другим и так далее.

Как мне построить это в R? (PS: я новичок в R)


person outflanker    schedule 26.04.2016    source источник
comment
Взгляните на пакет ggplot2 и график geom_area.   -  person Gopala    schedule 27.04.2016


Ответы (1)


Какой тип графика вас интересует? Ваши данные:

df<-read.table(header = TRUE, text = "Time  CatA  CatB  CatC  Value
               1       A      X      P      4 
               2       A      X      Q      6 
               3       A      Y      R      3 
               4       A      Y      P      7 
               1       B      X      Q      8 
               2       B      X      R      9 
               3       B      Y      P      5 
               1       A      X      Q      8 
               2       A      X      R      2 
               3       A      Y      P      6 
               4       A      Y      Q      4 
               5       A      Y      R      3")

Код для создания сюжета:

library(ggplot2)
#combine all of the cat to a single label
df$cat<-paste(df$CatA, df$CatB, df$CatC)
ggplot(df, aes(x=cat, y=Value, fill=CatB)) + geom_bar(stat="identity") +
  scale_fill_manual(values=c("#669933", "#FFCC66")) +
  xlab("Cat: A,B and C")
person Dave2e    schedule 26.04.2016