2012-04-26 36 views
0

旁邊我設法將一些數據聚合到以下幾點:Barplot問題

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 

我通過努力創造一個barplot那裏換了個酒吧是彼此相鄰,所以上面的例子一月4月將有兩個酒吧(2011年和2012年)和其餘的月份將只有一個代表2011年的酒吧。

我知道我必須使用beside=T,但我想我需要創建某種矩陣爲了讓barplot正確顯示。我有一個問題想清楚這一步是什麼。我有一種感覺,它可能涉及matrix,但由於某種原因,我完全被難倒了似乎是一個非常簡單的解決方案。

此外,我有這樣的數據:y=c('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'),我想在我的names.arg中使用。當我嘗試使用上面的數據時,它會告訴我選擇了未定義的列,這意味着我需要在y中使用16個變量。我怎樣才能解決這個問題?

+0

我繼續前進並切換列名稱;我認爲這是一個錯字。 – joran 2012-04-26 19:54:07

回答

2

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