2012-04-08 8 views
2

誰でも、数値x変数をggplot2の因子によってグループ化された相対頻度にマップする棒グラフをプロットできますか?重要なことは次のとおりです。 相対頻度は、グループごとに1つの要素に属するx値内のの頻度として計算する必要があります。今度は、合計のx値の数に対するx値として計算されます。 Toはそれを示してggplot2のドッテッドバープロットのプロット相対頻度

、例:

library(ggplot2) 

data <-data.frame(x=runif(100,0:1), f=sample(1:3,100,replace=TRUE)) 
data$f <-factor(data$f) 
p <-ggplot(data, aes(x, colour=f, fill=f, group=f)) + 
    xlim(0,1) + 
    scale_y_continuous('Relative Frequency', formatter='percent') # or labels=percent 

私たちはファセットそれらをプロットしてみましょう。次にy軸は比率がグループごとに計算されることを示します。私はこのコードを使用しました:

p + stat_bin(aes(y=..count../sum(..count..)), position='dodge', binwidth=0.2) +   facet_grid(~f) 

私たちはそれらを避けてください。 y軸は、割合がデータセット全体を参照していることを示しています。ここで、私は、次のコードを使用する:

p + stat_bin(aes(y=..count../sum(..count..)), position='dodge', binwidth=0.2) 

Iはy軸上のグループごとに可変の周波数を有する第二のようなグラフを作成することを目的としています。

事前にお問い合わせいただきありがとうございます。 ヤナ

+0

となります。最初のグラフは、面ファクターの割合を示していません。データをあらかじめ集計してからggplotに渡す必要があります。 –

答えて

2

私はあなたと同じ問題に直面していたし、私はそれを考え出した:代わりに、実際に..count../sum(..count..)、プロット..density..*your_binwidth をプロットすると、ビンスタットによって作成された..density..変数は比例/ bindwidthと基本的に同じです。 コードは

p + stat_bin(aes(y=..density..*0.2), position='dodge', binwidth=0.2) 
+0

-1;この回答を除いて、かなり正しいです:http://stats.stackexchange.com/questions/4220/a-probability-distribution-value-exceeding-1-is-ok。正しい解決方法については、http://stackoverflow.com/questions/17655648/how-can-i-plot-the-relative-proportions-of-two-groups-using-a-fill-aesthetic-inを参照してください。 – russellpierce

関連する問題