【R】蜜蜂图beeswarm

2022-09-21 19:15:15 浏览数 (2)

蜜蜂图或蜂群图(beeswarm)这个名字,大家可能比较陌生,但是大家肯定都见过他的尊容。下面这张图就是一个典型的蜜蜂图。因为看上去像一群飞舞的蜜蜂而得名。

可能大家觉得蜜蜂图跟散点图或者jitter图差不多,但实际上他们之间还是有很大区别的。

上面三张图,从上至下分别为jitter图,蜜蜂图(beeswarm)和散点图。从图中可以发现,beeswarm很好的体现了数据的分布,更加清楚、直观。而jitter图和散点图,难以快速获取信息,point图中点过于密集,jitter中分布过于散乱。这也是很多科学论文选择beeswarm图的原因,在小样本下也许jitter或者points的方法也能够传达我们想要传递的信息,但是在样本量较大的时候,这两个绘图方法就不太适合了。而beeswarm图在大样本的情况下也比较适用。不仅可以体现每一个样本具体情况,而且能够查看整体的情况。

下面是绘制这三张图的具体代码

代码语言:javascript复制
#安装beeswarm包
install.packages("beeswarm")

#加载beeswarm包
library(beeswarm)

#生成一个pdf文件来保存图片
pdf(file="stripchart_beeswarm_points.pdf",height=9,width=9)
par(mfrow=c(3,1))
#绘制jitter图
stripchart(decrease ~ treatment, data = OrchardSprays, vertical = TRUE, 
           log = "y", method = 'jitter', jitter = 0.2, cex = 1,pch = 16, 
           col = rainbow(8),main = 'stripchart')

#绘制蜜蜂图
beeswarm(decrease ~ treatment, data = OrchardSprays, log = TRUE, 
         pch = 16, col = rainbow(8),main = 'beeswarm')

#绘制散点图
plot(as.numeric(OrchardSprays$treatment),  
     log2(OrchardSprays$decrease), 
     type="p",pch=16,
     col=rainbow(8)[OrchardSprays$treatment],
     ylab="decrease",
     xlab="treatment",
     xaxt="n",
     main="points"
     )
xtick=seq_along(levels(OrchardSprays$treatment))
axis(side=1, at=xtick, labels = FALSE,tcl = -0.2)
text(x=xtick,  par("usr")[3], 
     labels = levels(OrchardSprays$treatment), pos = 1, xpd = TRUE)
dev.off()

在stripchart_beeswarm_points.pdf文件中我们就能找到绘制的三张图了。后面小编会详细给大家介绍beeswarm这个R包的使用,绘制更多不同类型的蜜蜂图。

0 人点赞