2013-05-02 11 views
9

私の質問は、 Normalizing y-axis in histograms in R ggplot to proportion に似ていますが、少し追加したいと思います。ファセットヒストグラムをggplot2で別々に正規化する

一般に、私は2x3ファセットデザインで6つのヒストグラムを持っています。私はそれらをそれぞれ別々に正規化したいと思います。私はアイデアを与えるためにここにサンプルデータセットを作成してみましょう:

ggplot(all, aes(x=hvalues,group=group)) + 
geom_histogram(aes(y=..count../sum(..count..))) + 
facet_grid(season ~ year) 

を使用して

hvalues=c(3,1,3,2,2,5,1,1,12,1,4,3) 
season=c("fall","fall","fall","fall","winter","winter","winter","winter","summer","summer","summer","summer") 
year=c("year 1","year 1","year 2","year 2","year 1","year 1","year 2","year 2","year 1","year 1","year 2","year 2") 
group=c("fall year 1","fall year 1","fall year 2","fall year 2","winter year 1","winter year 1","winter year 2","winter year 2","summer year 1","summer year 1","summer year 2","summer year 2") 
all=data.frame(hvalues,season,year) 

は(すなわち、すべての面を組み合わせた)全体的なプロポーションを与えます。私は各グループのファセットを1に正規化したい。hvaluesは私の実際のデータの整数ではなく、数値である。

私はRを使った初心者ですが、本当に助けに感謝します。前もって感謝します!

+1

'y = ..density..'を試してください。 – joran

+1

'all'はデータフレームでなければなりません。 'すべて< - as.data.frame(cbind(hvalues、season、year))'を試してください。 – JT85

+1

@ JT85私は同意しますが、 'data.frame(...)'の代わりに 'as.data.frame(cbind(...))'の使用を推奨してはいけません。 – joran

答えて

4

解決策は以下のとおりです。

ggplot(all, aes(x=hvalues)) + 
    facet_grid(season ~ year,drop=T) + 
    geom_histogram(aes(y=(..count..)/tapply(..count..,..PANEL..,sum)[..PANEL..])) 

私はあなたの質問は道によって1つの複製であるかもしれないと感じ、このquestion

からこれを盗みました。

関連する問題