barplot2()
ライブラリの関数を使用しているのでgplots
、このアプローチを使用した例を示します。
まず、関数のヘルプファイルに記載されている棒グラフを作成しましたbarplot2()
。ci.l
およびci.u
は偽の信頼区間値です。棒グラフはオブジェクトとして保存する必要があります。
hh <- t(VADeaths)[1:2, 5:1]
mybarcol <- "gray20"
ci.l <- hh * 0.85
ci.u <- hh * 1.15
mp <- barplot2(hh, beside = TRUE,
col = c("grey12", "grey82"),
legend = colnames(VADeaths)[1:2], ylim = c(0, 100),
cex.names = 1.5, plot.ci = TRUE, ci.l = ci.l, ci.u = ci.u)
オブジェクトを見るとmp
、すべてのバーのx座標が含まれています。
mp
[,1] [,2] [,3] [,4] [,5]
[1,] 1.5 4.5 7.5 10.5 13.5
[2,] 2.5 5.5 8.5 11.5 14.5
ここで、信頼区間の上限値を使用して、セグメントのy値の座標を計算します。セグメントは、信頼区間の終わりより1高い位置から開始します。y.cord
4つの行が含まれています。最初の行と2番目の行は最初のバーに対応し、他の2つの行は2番目のバーに対応します。最高のy値は、各バーペアの信頼区間の最大値から計算されます。
値は、オブジェクトにx.cord
ある同じ値を2回ずつ繰り返すだけです。mp
y.cord<-rbind(c(ci.u[1,]+1),c(apply(ci.u,2,max)+5),
c(apply(ci.u,2,max)+5),c(ci.u[2,]+1))
x.cord<-apply(mp,2,function(x) rep(x,each=2))
棒グラフを使用sapply()
して、計算された座標を使用して5つの線分を作成した後(今回は5つのグループがあるため)。
sapply(1:5,function(x) lines(x.cord[,x],y.cord[,x]))
セグメントの上にテキストをプロットするには、x座標とy座標を計算します。ここで、xは2つのバーのx値の中間点であり、y値は各バーペアの信頼区間の最大値に定数を加えて計算されます。次に、関数text()
を使用して情報を追加します。
x.text<-colMeans(mp)
y.text<-apply(ci.u,2,max)+7
text(c("*","**","***","NS","***"),x=x.text,y=y.text)