barplot多重聚合

时间:2016-07-11 08:16:00

标签: r bar-chart

我有一个数据框“count”,如下所示:

#                 Date      Code   Number_of_events
#1                  01-04  022003        5
#2                  01-06  022003        9
#3                  01-08  022003        3
#4                  01-11  022003        2
#5                  01-13  022003        5
#...
#3754               03-11  396001        4
#3755               03-16  396001        4
#3756               03-21  396001       17
#3757               03-22  396001       23
#3758               03-23  396001        3

我得到的是日期和代码聚合df的结果:

count<-aggregate(.~ Date+Code,data=df,FUN=sum) 

我想做一个事件数量(y)与日期(x)的条形图,每个代码都是一个系列(因此是彩色条形图)。知道事件不会在完全相同的日期发生。

有人可以帮我这个吗?谢谢

2 个答案:

答案 0 :(得分:1)

我们可以使用barplot

barplot(xtabs(Number_of_events~Code + Date, df), 
               beside = TRUE, legend = TRUE, col = c("red", "blue"))

或使用ggplot

library(dplyr)
library(ggplot2)
df %>%
     group_by(Date, Code) %>%
     summarise(Number_of_events = sum(Number_of_events)) %>%
     ggplot(., aes(x= Date, y = Number_of_events)) + 
       geom_bar(aes(fill= factor(Code)), position = "dodge", stat = "identity")

答案 1 :(得分:1)

您可以使用ggplot2包,其中包含方便的geom_bar()功能。

模拟一些数据:

# simulate some data
N <- 100
df <- data.frame(Date = sample(seq(as.Date("2000/1/1"), by = "month", length.out = 48), N, T),
                    Code = sample(c(022003, 396001, 441002), size = N, replace = T),
                    Number_of_events = rpois(N, 5))

#aggregate
count <- aggregate(.~ Date+Code,data=df,FUN=sum)

这是为了绘图:

library(ggplot2)

ggplot(count, aes(x=Date, y=Number_of_events)) +
  geom_bar(aes(fill=as.factor(Code)), color="black", stat="identity", position="stack")

enter image description here