2013-06-25 11 views
8

私は9つのグループ化バープロット(3x3)を得る方法を知りたいと思います。ggplot複数のグループ化バー

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

9つのプロットは、次に、各グループ化された棒グラフは、y軸上の周波数を有していなければならないI.

に「タイプ」Aに従ってgroupesであるべきで、x軸はごとにグループ化され1 pce〜6 pceで、1年未満である。

私は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) 

今barplotを取得するために、塗りのyとxとvariablevalueAnneegeom_bar()を使用しています。 facet_wrap()では、データをTypeで分割できます。 @Didzisを使用して

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): 少なくとも1つのレイヤに、ファセットに使用されるすべての変数が含まれている必要があります – S12000

+0

@ Swiss12000私のコードとまったく同じ方法でコードを使用していますか?そうでない場合は、あなたの質問に使用するコードを追加してください。 –

+0

本当に私は間違いが必要です。私はggplotを学ぶためにR Graphics Cookbookを持っていますが、もっと複雑なグラフを書く方法は言及していません。あなたは毎日ggplotを少し勉強しましたか、それとも先進的な本を読んだことがありますか? – S12000

10

ここでは、格子のバージョンのデータを作り直さ:こんにちはおかげで印象的ですが、私の側に私はエラーというエラーメッセージが表示されます

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