2009-09-27 7 views
6

では、次のデータセットがあるとしましょう:かわし位置箱ひげ図に要約統計量(あるいは生データポイント)を追加する

trt <- ifelse(runif(100)<0.5,"drug","placebo") 
inj.site <- ifelse(runif(100)<0.5,"ankle","wrist") 
relief <- 20 + 0.5*(inj.site=="ankle") + 0.5*(trt=="drug") + rnorm(100) 
to.analyze <- data.frame(trt,inj.site,relief) 

さて、アイデアはx軸と箱に損傷部位で箱ひげ図を作ることですサイドバイサイドによる治療:

bplot <- ggplot(to.analyze,aes(inj.site,relief,fill=trt)) + geom_boxplot(position="dodge") 

十分に簡単です。しかし、今では、ボックスの上に生のデータポイントを追加したいと思います。私はposition="dodge"で箱を持っていなかった場合は、これは簡単だろう:

bplot + geom_point(aes(colour=trt)) 

しかし、これはボックス間でポイントを描画し、このジオメトリにposition="dodge"を追加すると動作するようには思えません。どのようにポイントをボックスの上に描くように調整するのですか?

ボーナス:同じ問題がある手段をオーバープロットするためにstat_summary(blah,y.fun=mean,shape="+")を使用して同じ状況。私はここで間違っている場合ハドレーは間違いなく私を修正します

+0

レリーフ< - 20 + 0.5 *(inj.site ==足首)+ 0.5 *(TRT == "薬剤")+ rnorm(100) にすべきである: レリーフ< - 20 + 0.5 *(inj.site == "足首")+ 0.5 *(trt == "drug")+ rnorm(100) – Paolo

+0

、はい、固定。 –

答えて

3

...

がここに自然な構文です:

bplot + geom_point(aes(colour=trt), position=position_dodge(width=.5)) 

(位置=「かわす」パラメータを指定せずに、同じことを行います。 )

私はそれをプロットすると、私はposition_jitter()のように見えるものが得られます。

私はpos_dodge()関数を見つけたソースを調べました。 (それを見るためにRプロンプトでpos_dodgeは...)ここでの最後の:

within(df, { 
    xmin <- xmin + width/n * (seq_len(n) - 1) - diff * (n - 1)/(2 * n) 
    xmax <- xmin + d_width/n 
    x <- (xmin + xmax)/2 
}) 

Nはデータフレームの行数です。だから、それは行によってインデックスされた分数によって個々の点を覆うように見えます!したがって、最初の点は幅/ nを取り除き、2番目の点は2 *幅/ nを取り除き、最後はn *幅/ nを取り除きます。それはあなたを言ったことがあるが

これは、あなたをどのような意味は明らかではありません。手動で回避したボックスプロットを作り直したり、多分ファセットを描くような別のビジュアライゼーションを使用しているかもしれませんか?

ggplot(to.analyze,aes(inj.site,relief)) + geom_boxplot() + facet_wrap(~ trt) 
+0

ファセット加工では、完全に機能します。しかし、私はinj.siteに面してみるかもしれませんが、視覚化の理由から、私はむしろポジションをやめましたか? –

関連する問題