1

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

   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')我想在我的 names.arg 中使用它。当我尝试将它与上述数据一起使用时,它告诉我选择了未定义的列,这意味着我需要 16 个变量y。我怎样才能解决这个问题?

4

1 回答 1

5

要使用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)

在此处输入图像描述

或者您可以将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)

在此处输入图像描述

于 2012-04-26T20:02:22.547 回答