web-dev-qa-db-ja.com

ボックスにサンプルサイズ(N)のラベルを付ける箱ひげ図をRで作成します

ボックス(どこか)とともに「N =(サンプルサイズ)」を表示するボックスプロットをRで作成する方法はありますか? varwidth論理は、サンプルサイズに基づいてボックスの幅を調整しますが、異なるプロット間の比較はできません。

FWIW、私は次の方法で箱ひげ図コマンドを使用しています。ここで、「f1」は因数です。

boxplot(xvar ~ f1, data=frame, xlab="input values", horizontal=TRUE)
16
J Miller

これがいくつかのggplot2コードです。サンプル平均でサンプルサイズを表示し、ラベルを多機能にします!

まず、fun.dataの簡単な関数

give.n <- function(x){
   return(c(y = mean(x), label = length(x)))
}

さて、ダイヤモンドのデータでデモンストレーションします

ggplot(diamonds, aes(cut, price)) + 
   geom_boxplot() + 
   stat_summary(fun.data = give.n, geom = "text")

見栄えを良くするためにテキストサイズをいじる必要があるかもしれませんが、これでサンプルサイズのラベルができ、スキューの感覚も得られます。

29
JoFrhwld

namesパラメーターを使用して、各因子名の横にnを書き込むことができます。

nを自分で計算したくない場合は、次の小さなトリックを使用できます。

# Do the boxplot but do not show it
b <- boxplot(xvar ~ f1, data=frame, plot=0)
# Now b$n holds the counts for each factor, we're going to write them in names
boxplot(xvar ~ f1, data=frame, xlab="input values", names=paste(b$names, "(n=", b$n, ")"))
10
nico

バーの上にnを表示するには、次のように箱ひげ図で提供されるtextの詳細とともにstatを使用できます。

b <- boxplot(xvar ~ f1, data=frame, plot=0)
text(1:length(b$n), b$stats[5,]+1, paste("n=", b$n))

Bの統計フィールドは行列であり、各列には、1つのグループ/プロットの下部ウィスカの極値、下部ヒンジ、中央値、上部ヒンジ、および上部ウィスカの極値が含まれています。

5
Dinesh

gplots パッケージはboxplot.nを提供します。これは、ドキュメントによると、観測数で注釈が付けられた箱ひげ図を生成します。

1
quazgar

Envstatsパッケージを使用して回避策を見つけました。このパッケージは、以下を使用してダウンロード、ロード、およびアクティブ化する必要があります。

library(Envstats)

StripChart(stripchartとは異なります)は、n値などのいくつかの値をグラフに追加します。まず、箱ひげ図をプロットしました。次に、stripChartでadd = Tを使用しました。明らかに、箱ひげ図に表示されないように、stripChartコードには多くのものが隠されていました。これは、ほとんどのアイテムを非表示にするためにstripChartに使用したコードです。

Boxplot n個の値を表示する統合stripChartを使用:

stripChart(data.frame(T0_G1,T24h_G1,T96h_G1,T7d_G1,T11d_G1,T15d_G1,T30d_G1), show.ci=F,axes=F,points.cex=0,n.text.line=1.6,n.text.cex=0.7,add=T,location.scale.text="none")

だから箱ひげ図

boxplot(data.frame(T0_G1,T24h_G1,T96h_G1,T7d_G1,T11d_G1,T15d_G1,T30d_G1),main="All Rheometry Tests on Egg Plasma at All Time Points at 0.1Hz,0.1% and 37 Set 1,2,3", names=c("0h","24h","96h","7d ", "11d", "15d", "30d"),boxwex=0.6,par(mar=c(8,4,4,2)))

次にstripChart

stripChart(data.frame(T0_G1,T24h_G1,T96h_G1,T7d_G1,T11d_G1,T15d_G1,T30d_G1), show.ci=F,axes=F,points.cex=0,n.text.line=1.6,n.text.cex=0.7,add=T,location.scale.text="none")

数値の上限(n値)は、必要な場所に合うようにいつでも調整できます。

0
Sting Haze