Barplot旁边的问题

时间:2012-04-26 19:51:10

标签: r plot

我设法将一些数据汇总到以下内容中:

   Month Year Number
1     1  2011   3885
2     2  2011   3713
3     3  2011   6189
4     4  2011   3812
5     5  2011    916
6     6  2011   3813
7     7  2011   1324
8     8  2011   1905
9     9  2011   5078
10   10  2011   1587
11   11  2011   3739
12   12  2011   3560
13    1  2012   1790
14    2  2012   1489
15    3  2012   1907
16    4  2012   1615

我正在尝试创建一个条形图,其中几个月的条形图彼此相邻,因此对于上面的示例,1月到4月将有两个条形图(一个用于2011年,一个用于2012年),其余月份将只有代表2011年的一个酒吧。

我知道我必须使用beside=T,但我想我需要创建某种矩阵才能使条形图正确显示。我有一个问题,弄清楚这一步是什么。我觉得它可能涉及matrix,但由于某种原因,我完全被这个看起来非常简单的解决方案所困扰。

另外,我有这个数据:y=c('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')我想在我的名字中使用.arg。当我尝试将它与上述数据一起使用时,它会告诉我选择了未定义的列,这意味着我需要y中的16个变量。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

要使用barplot,您需要重新排列数据:

dat <- read.table(text = "   Month Year Number
1     1  2011   3885
2     2  2011   3713
3     3  2011   6189
4     4  2011   3812
5     5  2011    916
6     6  2011   3813
7     7  2011   1324
8     8  2011   1905
9     9  2011   5078
10   10  2011   1587
11   11  2011   3739
12   12  2011   3560
13    1  2012   1790
14    2  2012   1489
15    3  2012   1907
16    4  2012   1615",sep = "",header = TRUE)

y <- c('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')

barplot(rbind(dat$Number[1:12],c(dat$Number[13:16],rep(NA,8))),
        beside = TRUE,names.arg = y)

enter image description here

或者您可以将 ggplot2 与数据一起使用:

dat$Year <- factor(dat$Year)
dat$Month <- factor(dat$Month)
ggplot(dat,aes(x = Month,y = Number,fill = Year)) + 
    geom_bar(position = "dodge") + 
    scale_x_discrete(labels = y)

enter image description here