美文网首页生信绘图
R beeswarm 绘制箱线、散点叠加

R beeswarm 绘制箱线、散点叠加

作者: 谢京合_生物信息 | 来源:发表于2020-11-24 17:39 被阅读0次

阅读癌症基因相关文章的时候,总是会遇到类似的图:


image.png

查资料许久,看看用ggplot2当中的 geom_jitter能不能实现。
但是,不幸。没有尝试成功。

然后就开始查阅资料啦

发现
一个更好用的包:beeswarm。

安装:

install.packages('beeswarm')
library(beeswarm)

官网有示例数据。
但是奈何没有解释呀,需要自己去尝试,看各个参数的含义。

data(breast)
beeswarm(time_survival ~ ER, data = breast,pch = 16, pwcol = 1 + as.numeric(event_survival),xlab = "", ylab = "Follow-up time (months)",labels = c("ER neg", "ER pos"))

那么,这些参数都是啥?

beeswarm(ERBB2 ~ ER, data = breast)
beeswarm(time_survival ~ ER, data = breast)
beeswarm(time_survival ~ ER, data = breast,log = TRUE)
beeswarm(time_survival ~ ER, data = breast,pch = 16,xlab = "", ylab = "Follow-up time (months)",labels = c("ER neg", "ER pos"),main = 'beeswarm')
beeswarm(time_survival ~ ER, data = breast,pch = 16,xlab = "", ylab = "Follow-up time (months)",labels = c("ER neg", "ER pos"),main = 'beeswarm',col = rainbow(2))
beeswarm(time_survival ~ ER, data = breast,pch = 16, pwcol = 1 + as.numeric(event_survival),xlab = "", ylab = "Follow-up time (months)",labels = c("ER neg", "ER pos"))
beeswarm(time_survival ~ ER, data = breast,pch = 16, pwcol = c(1:286),xlab = "", ylab = "Follow-up time (months)",labels = c("ER neg", "ER pos"))
legend("topright", legend = c("Yes", "No"),title = "Censored", pch = 16, col = 1:2)
image.png
image.png

有的时候,还需要循环画图。
那么就写个循环。

#循环画图,并且输出到一个文件中
setwd("path to dir")
pdf("plots.pdf")
plot_list <- list()

for (m in c("swarm", "center", "hex", "square")) {
p <- beeswarm(time_survival ~ ER, method = m,data = breast,pch = 16, pwcol = 1 + as.numeric(event_survival),xlab = "", ylab = "Follow-up time (months)",labels = c("ER neg", "ER pos"),main = paste('method = "', m, '"', sep = ''))
print(plot_list[[m]])
}
dev.off()

这个就是把所有的图,输出到一个pdf文件(plots.pdf)当中。

接着,就是绘制箱线、散点重叠的图。
第一种:先画箱子,再加点。

boxplot(len ~ dose, data = ToothGrowth, outline = FALSE, main = 'boxplot + beeswarm')
beeswarm(len ~ dose, data = ToothGrowth, col = 1, pch = 16, add = TRUE)

boxplot(time_survival ~ ER, data = breast, outline = FALSE, main = 'boxplot + beeswarm')
beeswarm(time_survival ~ ER, data = breast, col = 2, pch = 16, add = TRUE)
beeswarm(time_survival ~ ER, data = breast, pwcol = 1 + as.numeric(event_survival), pch = 16, add = TRUE)
image.png

第二种:先画点,再画箱子。(换个顺序画图就完全不一样哦,自己去尝试)

beeswarm(len ~ dose, data = ToothGrowth, col = 4, pch = 16,main = 'beeswarm + bxplot')
bxplot(len ~ dose, data = ToothGrowth, add = TRUE)
image.png

相关文章

网友评论

    本文标题:R beeswarm 绘制箱线、散点叠加

    本文链接:https://www.haomeiwen.com/subject/nvfwiktx.html