當您使用功能barplot2()
從庫gplots
,將使用這種方法給出的例子。
首先,在幫助文件barplot2()
函數中給出了barplot。 ci.l
和ci.u
是假置信區間值。 Barplot應該保存爲對象。
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
包含四行 - 第一行和第二行對應第一個欄,其他兩行對應第二個欄。最高的y值是從每個柱對的置信區間的最大值計算出來的。 x.cord
值只是在mp
對象中重複相同的值,每個值爲2次。
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))
barplot由使用sapply()
後使5個線段使用計算出的座標(因爲此時有5組)。
sapply(1:5,function(x) lines(x.cord[,x],y.cord[,x]))
要繪製的線段上述文本計算x和y座標,其中x是兩個條形的x值的中間點和y值被從置信區間爲每個杆對加上一些恆定的極大值來計算。然後使用功能text()
添加信息。
x.text<-colMeans(mp)
y.text<-apply(ci.u,2,max)+7
text(c("*","**","***","NS","***"),x=x.text,y=y.text)
multcomp中有一個plot.cld函數,您可以將字母放在您的酒吧上方指示重要性。 Perhabs這也適合你... – EDi 2013-03-20 22:28:07
還有'agricolae'包中的'bar.group',它爲你打上字母。 – mnel 2013-03-20 22:35:05
如果您使用base R的'barplot',則可以存儲像barstore < - barplot(1:3)'這樣的條的中心點。爲了驗證這是否正常,請嘗試'abline(v = barstore)'並注意垂直線都切斷了條的中心。使用'段'可以使用這些存儲點來繪製比較/交互線。 – thelatemail 2013-03-20 23:43:11