2013-06-25 85 views
8

我想知道如何獲得9個分組條形圖(3x3)togheter。ggplot多個分組吧

我的CSV:data <- read.csv("http://pastebin.com/raw.php?i=6pArn8GL", sep = ";")

的9所繪製應根據「類型」 A至I.

是groupes然後,每個分組的柱狀圖應具有在y軸上的頻率,x軸是通過分組1 pce到6 pce並逐年下降。

我在Excel上有下面的例子(cf. image),並且想用ggplot在r上創建相同的結果。可能嗎?

感謝

enter image description here

回答

22

首先,從廣角重塑你的數據,以長格式。

library(reshape2) 
df.long<-melt(df,id.vars=c("ID","Type","Annee")) 

接着,作爲進口數據字母X被添加到變量名開始數時,與substring()移除。

df.long$variable<-substring(df.long$variable,2) 

現在使用的填充variable爲x,value爲y,Anneegeom_bar()得到barplot。用facet_wrap()您可以將數據拆分Type

ggplot(df.long,aes(variable,value,fill=as.factor(Annee)))+ 
    geom_bar(position="dodge",stat="identity")+ 
    facet_wrap(~Type,nrow=3) 

enter image description here

+1

您好感謝是令人印象深刻,但在我的身邊,我得到一個錯誤信息說錯誤layout_base(data,vars,drop = drop): 至少有一個圖層必須包含用於構建切面的所有變量 – S12000

+0

@ Swiss12000您是否使用與我的代碼完全相同的代碼?如果不是,請添加您在問題中使用的代碼。 –

+0

確實我需要一個錯誤是完美的工作感謝您的幫助。我有R Graphics Cookbook來學習ggplot,但他們沒有提到如何做更復雜的圖形。你有沒有每天學習ggplot,或者你讀過高級書籍? – S12000

10

使用@Didzis重塑數據,這裏的格子版本:

barchart(value~variable|Type, 
     groups=Annee,data=df.long,layout=c(3,3), 
     between=list(3,3), 
     axis=axis.grid, 
     auto.key=TRUE) 

enter image description here