2015-11-13 9 views
7

標準ボックスプラット関数Rの平均値と中央値の両方を示すボックスプロットを作成できますか?私の現在のソリューションは、クロスのように平均値表示:平均値を線として表示するボックスプロット

set.seed(1234) 
values <- runif(10,0,1) 
boxplot(values) 
points(mean(values),col="red",pch=4,lwd = 4) 

Image of boxplot

答えて

9

をできます

set.seed(753) 
df <- data.frame(y=rt(100, 4), x=gl(5, 20)) 
bx.p <- boxplot(y~x, df) 
bx.p$stats[3, ] <- unclass(with(df, by(y, x, FUN = mean))) 
bxp(bx.p, add=T, boxfill="transparent", medcol="red", axes=F, outpch = NA, outlty="blank", boxlty="blank", whisklty="blank", staplelty="blank") 

説明を経由して@scs:

bxp$statsは行列を返します各ボックスプロットの下部ウィスカー、下部ヒンジ、中央値、上部ヒンジおよび上部ウィスカーの極値を含む。上記の解決方法では、bx.p$stats[3, ]で指定された中央値を平均値で上書きします。 bxp関数は、boxplotオブジェクトをプロットする関数です。

結果:

enter image description here

+0

たぶんそれは私ですが、私は同じプロットで2つのものを区別する単なる色以外の兆候があるのが好きです。実際の用紙でこれを読んでみたいと思っていたのですが、それを印刷できる唯一のプリンタは黒いインクしか持っていないと思います。 –

+0

legend( 'topleft'、lty = c(1,1)、lwd = rep(3,2)、col = c( "black"、 "red")、legend = c( "median "、" mean ")、horiz = TRUE、bg =" transparent ")'である。 – lukeA

+0

私のプリンタは凡例にも黒インクを使用しています。 :-) –

9

boxplotのデフォルトのプロットは、ボックスの幅がx-axis1.20.8から行くことができます。

あなたは、したがって、以下のコードでの平均のためのラインを描くことができます。あなたも重ねてプロットし、完全を期すために

lines(c(0.8, 1.2), rep(mean(values), 2), col="red", lwd = 2) 

enter image description here

+2

これは、実際の問題を解決しますが、それは同じウィンドウまたはカスタムの幅/高さのプロットで複数の箱ひげ図を含む溶液に容易に拡張できません。したがって、以下のより一般的な解決策が受け入れられた回答として選択されました。 – scs

関連する問題