由于您使用了库gplots
中的函数barplot2()
,因此将使用此方法进行示例。
首先,根据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
包含四行 - 第一行和第二行对应于第一个条形图,其他两行对应于第二个条形图。最高的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))
制作完条形图后,使用 sapply()
根据计算出的坐标值绘制五条线段(因为这次有五个组)。
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)
![enter image description here](https://istack.dev59.com/0k8vg.webp)
agricolae
هŒ…çڑ„bar.group
ه‡½و•°ï¼Œهڈ¯ن»¥ن¸؛و‚¨و·»هٹ ه—و¯چم€‚ - mnelbarplot
函数,您可以像这样存储每个条形柱的中心点:barstore <- barplot(1:3)
。为了验证这一点,您可以尝试使用abline(v=barstore)
命令,注意到所有的垂直线都穿过了条形柱的中心点。使用segments
函数,您可以使用这些存储的点来绘制比较/交互线。 - thelatemail