多渠道繪制小提琴圖,實(shí)現(xiàn)作圖自由
文章中出現(xiàn)很多小提琴圖和盒性圖,即體現(xiàn)了美觀性又具有很強(qiáng)的可讀性。
本文匯總了很多制作小提琴圖的方法可以供選擇,總有一個(gè)適合你的方法。
什么是小提琴圖,生物學(xué)意義是什么?
一般來(lái)說(shuō)小提琴圖是一種繪制連續(xù)型數(shù)據(jù)的方法,在小提琴圖中既可以看到與箱線圖中一樣的相同的信息,包括中位數(shù)(中間的一個(gè)小白點(diǎn)),四分位數(shù)范圍(中間的黑色的條),第一四分位數(shù)和第三四分位數(shù),還可以觀察到數(shù)數(shù)據(jù)的整體的數(shù)據(jù)分布狀態(tài)。

有了進(jìn)一步的了解之后,可以嘗試?yán)L制小提琴圖啦~
用vioplot包繪制小提琴圖
#安裝加載安裝包
install.packages("vioplot")
library(vioplot)
#利用R中自帶的iris來(lái)學(xué)習(xí)小提琴的繪制
df <- data.frame(iris)
#這樣繪制出基礎(chǔ)的小提琴圖形
vioplot(Sepal.Length~Species,data = df,main ="Speal Length",col = c("lightgreen","lightblue","pink"))
#添加圖例
legend("topleft",legend=c("setosa","versicolor","virginica"),fill = c("lightgreen","lightblue","pink"),cex = 0.7)

在嘗試一個(gè)關(guān)于R中鉆石的數(shù)據(jù)~
#鉆石
df1 <- data.frame(diamonds)
head(df1)
#繪制鉆石的價(jià)格是與cut、color和clarity三個(gè)不同維度中的數(shù)據(jù)狀態(tài)
a <- length(levels(df1$cut))
b <- length(levels(df1$color))
c <- length(levels(df1$clarity))
num = max(a,b,c)
#最多有8個(gè)畫板,選擇畫板
install.packages("RColorBrewer")
library(RColorBrewer)
col <- ?RColorBrewer::brewer.pal(8,"Accent")
col
vioplot(price~cut,data = diamonds,col = col)

用ggpubr來(lái)繪制小提琴圖
在以前我們用ggpubr繪制過(guò)相關(guān)性分析圖,這個(gè)萬(wàn)能的繪圖包也可以用來(lái)繪制相應(yīng)的小提琴圖。
comparisons <- list(c("setosa", "versicolor"), c("versicolor", "virginica"), c("setosa","virginica"))
library(ggpubr)
ggviolin(iris, x = "Species", y = "Sepal.Length",
fill = "Species", #xy軸定義,填充映射到物種上
palette = c("lancet"),#色塊的選擇,這里提供了"npg", "aaas", "lancet", "jco", "ucscgb", "uchicago", "simpsons" and "rickandmorty"等
add = "boxplot",#添加箱線圖在圖中,還可以選擇"none", "dotplot", "jitter", "boxplot", "point", "mean", "mean_se", "mean_sd", "mean_ci", "mean_range", "median", "median_iqr", "median_hilow", "median_q1q3", "median_mad", "median_range"等來(lái)查看圖中的一些細(xì)節(jié)部分
add.params = list(fill = "white"),#填充為白色
order = c("virginica","versicolor","setosa"), error.plot = "errorbar") + stat_compare_means(comparisons = comparisons)
#最后用stat_compare_means函數(shù)實(shí)現(xiàn)兩兩比較的田間p值的操作。

用ggplot繪制小提琴圖
相比于前面的兩種ggplot繪制小提琴圖較為麻煩一下,但是確可以滿足很多精細(xì)的需求。ggplot繪圖就像是我們繪畫一樣,一步一步的添加即可,那跟隨小云的步伐一起來(lái)操作一下吧~
#繪制一個(gè)基本的圖層
p <- ggplot(ToothGrowth, aes(x = dose, y = len))
#基礎(chǔ)
p + geom_violin()
#不修剪小提琴的尾部
p + geom_violin(trim = FALSE, fill = "steelblue")
#添加統(tǒng)計(jì)值,fun=mean是均值,還可以是median
p + geom_violin(trim = FALSE) +stat_summary(fun= mean, geom = "point",
???????????????shape = 23, size = 2, color = "blue")
#添加箱線圖
p + geom_violin(trim = FALSE) +
??geom_boxplot(width = 0.2)
#填充顏色
p + geom_violin(aes(fill = dose), trim = FALSE)+geom_boxplot(width = 0.2)

除了以上繪制的方法意外還有很多小工具已經(jīng)實(shí)現(xiàn)了小提琴的繪制,例如:https://www.bioinformatics.com.cn/plot_basic_vertical_horizontal_violin_plot_068
我們?cè)谧隹蒲械臅r(shí)候需要用各種不同的圖形來(lái)展示我們的數(shù)據(jù),合理的選擇圖形,合理選擇簡(jiǎn)便有效的繪圖方法都是我們值得考慮的。通過(guò)總結(jié)不同的繪圖方法也是我們學(xué)習(xí)好生信的必要一步,小云和你們一起加油~
通過(guò)以上的操作,相信你對(duì)于小提琴圖的繪制以及一些基礎(chǔ)的原理有了一定的了解,也一定選擇了一個(gè)適合你的方法。當(dāng)然這里只是一個(gè)簡(jiǎn)單的引導(dǎo)作用,每種包或是方法中都有很多參數(shù),可以幫助我們繪制出更加美觀的圖形,值得大家細(xì)細(xì)探索。
好了,這樣我們小提琴圖就介紹到這里了。小伙伴們?nèi)绻惺裁磫?wèn)題就和小云討論吧。

