閱讀癌癥基因相關(guān)文章的時(shí)候,總是會(huì)遇到類似的圖:
image.png
查資料許久,看看用ggplot2當(dāng)中的 geom_jitter能不能實(shí)現(xiàn)。
但是喳瓣,不幸。沒有嘗試成功赞别。
然后就開始查閱資料啦
發(fā)現(xiàn)
一個(gè)更好用的包:beeswarm夫椭。
安裝:
install.packages('beeswarm')
library(beeswarm)
官網(wǎng)有示例數(shù)據(jù)。
但是奈何沒有解釋呀氯庆,需要自己去嘗試蹭秋,看各個(gè)參數(shù)的含義。
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"))
那么堤撵,這些參數(shù)都是啥仁讨?
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
有的時(shí)候,還需要循環(huán)畫圖实昨。
那么就寫個(gè)循環(huán)洞豁。
#循環(huán)畫圖,并且輸出到一個(gè)文件中
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()
這個(gè)就是把所有的圖,輸出到一個(gè)pdf文件(plots.pdf)當(dāng)中丈挟。
接著刁卜,就是繪制箱線、散點(diǎn)重疊的圖曙咽。
第一種:先畫箱子蛔趴,再加點(diǎn)。
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
第二種:先畫點(diǎn)例朱,再畫箱子孝情。(換個(gè)順序畫圖就完全不一樣哦,自己去嘗試)
beeswarm(len ~ dose, data = ToothGrowth, col = 4, pch = 16,main = 'beeswarm + bxplot')
bxplot(len ~ dose, data = ToothGrowth, add = TRUE)
image.png