2011-08-20 20 views
4

我在ggplot2上掙扎了一下,希望能夠通過例子多學一點。如何在ggplot2中製作多個條形圖?

我有很多的數據,看起來像類似的事情這會產生:

data.frame(version=c('v1', 'v1', 'v1', 'v1', 'v2', 'v2', 'v2', 'v2'), 
      platform=c('linux', 'linux', 'mac', 'mac', 
         'linux', 'linux', 'mac', 'mac'), 
      type=c('a', 'b', 'a', 'b', 'a', 'b', 'a', 'b'), 
      count=floor(runif(8, 0, 10000))) 

我經常barplot,領我型堆積條形圖對於給定的操作系統(用cast切片出來,但我並不完全得到了我想要與GGPLOT2但

我可以管理做這樣的事情(假設上面保存爲sample)繪製一個單一的平臺。

qplot(version, a, data=cast(sample[sample$platform=='linux',], 
          version ~ type, value="count"), 
     geom='bar') 

理想情況下,我希望堆疊的類型(在本例中顯式爲a - 只有兩種類型),然後每個平臺並排顯示一個按照版本分組的圖表。

也就是說,對於每個版本,我想每個(每個平臺一個)有兩個棧(按類型)。

回答

6

這裏有一個選項:

dat <- data.frame(version=c('v1', 'v1', 'v1', 'v1', 'v2', 'v2', 'v2', 'v2'), 
      platform=c('linux', 'linux', 'mac', 'mac', 
         'linux', 'linux', 'mac', 'mac'), 
      type=c('a', 'b', 'a', 'b', 'a', 'b', 'a', 'b'), 
      count=floor(runif(8, 0, 10000))) 


ggplot(data = dat, aes(x = platform, y = count)) + 
    facet_wrap(~version) + 
    geom_bar(aes(fill = type)) 

產生這樣的:

enter image description here

你的榜樣數據只有兩個平臺,所以也許這只是一個錯字,因爲你引用的三人。

+0

哦,對不起。我的真實數據中有三個,但我的樣本只有兩個。厭倦了輸入所有的組合。 :)這看起來不錯。我認爲這可能比我要求的更容易理解。 – Dustin

+2

@Dustin沒問題。 [這](http://learnr.wordpress.com/)博客有很多很好的ggplot2的例子,哈德利的[網站](http://had.co.nz/ggplot2/),但他的書是迄今爲止最好的參考。 – joran