R 如何为蜂群图添加平均值

R 如何为蜂群图添加平均值,r,R,以下是数据集(d2): 以下是脚本: #beeswarm beeswarm(d2, method="swarm", col = c("black"), pch = 16, cex.axis = 1, cex = 1 ) #add mean m <- mean(d2, na.rm=T) segments(0.9,m[[1]],1.1,m[[1]], lwd = 2, lty = 3, col = "black") 首先,你需要做一个均值向量: > means=apply(d2,

以下是数据集(d2):

以下是脚本:

#beeswarm
beeswarm(d2, method="swarm", col = c("black"), pch = 16, cex.axis = 1, cex = 1 ) 

#add mean
m <- mean(d2, na.rm=T)
segments(0.9,m[[1]],1.1,m[[1]], lwd = 2, lty = 3, col = "black")

首先,你需要做一个均值向量:

> means=apply(d2, 2, function(x) mean(na.omit(x))) #don't forget na.omit
> means
  WT.hypo  WT.hyper   KO.hypo  KO.hyper 
12.426192  4.656158  7.751991  5.061578 
然后可以添加以下行:

> segments(0.9, means[[1]], 1.1, means[[1]], lwd=2, lty=3, col="black")
> segments(1.9, means[[2]], 2.1, means[[2]], lwd=2, lty=3, col="black")
> segments(2.9, means[[3]], 3.1, means[[3]], lwd=2, lty=3, col="black")
> segments(3.9, means[[4]], 4.1, means[[4]], lwd=2, lty=3, col="black")


我建议您考虑使用
beeswarm
中的内置
bxplot()
函数;这要容易得多。

正如@Matt所说,你可以这样做:

beeswarm(d2, method="swarm", col = c("black"), pch = 16, cex.axis = 1, cex = 1 ) 
bxplot(d2, add = TRUE, probs = 0.5)
我的问题是怎么画这样一幅画,三条线的长度不一样


欢迎来到SO!请使用
dput(d2)
显示您的数据。明白了。谢谢!!
> segments(0.9, means[[1]], 1.1, means[[1]], lwd=2, lty=3, col="black")
> segments(1.9, means[[2]], 2.1, means[[2]], lwd=2, lty=3, col="black")
> segments(2.9, means[[3]], 3.1, means[[3]], lwd=2, lty=3, col="black")
> segments(3.9, means[[4]], 4.1, means[[4]], lwd=2, lty=3, col="black")
beeswarm(d2, method="swarm", col = c("black"), pch = 16, cex.axis = 1, cex = 1 ) 
bxplot(d2, add = TRUE, probs = 0.5)