??今天繼續(xù)分享生信分析中常見的圖形 -- 小提琴圖姐呐。繪制的過程依然是基于ggplot2
耿焊,然后在此基礎上進行美化以符合大眾的審美標準!
小提琴圖可用于顯示數(shù)據(jù)分布及其概率密度〈⑿Γ可以認為是箱形圖和密度圖的結(jié)合體,主要用來顯示數(shù)據(jù)的分布形狀圆恤。所以突倍,可以從圖中大致獲取到箱線圖的所有信息。當然小提琴的另外一個優(yōu)勢在于盆昙,除了顯示箱線圖的分位數(shù)統(tǒng)計外羽历,它還可以還顯示了數(shù)據(jù)的整體分布,這一優(yōu)點在數(shù)據(jù)有多個峰值時體現(xiàn)地尤為明顯淡喜。
繪圖
??話不多說秕磷,繪圖代碼如下:
library(ggplot2)
library(dplyr)
library(tidyr)
# 獲取測試數(shù)據(jù)
data <- read.table("https://raw.githubusercontent.com/zonination/perceptions/master/probly.csv", header=TRUE, sep=",")
# 數(shù)據(jù)清洗為需要的格式
data <- data %>%
gather(key="text", value="value") %>%
mutate(text = gsub("\\.", " ",text)) %>%
mutate(value = round(as.numeric(value),0)) %>%
filter(text %in% c("Almost Certainly","Very Good Chance","We Believe","Likely","About Even", "Little Chance", "Chances Are Slight", "Almost No Chance"))
head(data)
text value
1 Almost Certainly 95
2 Almost Certainly 95
3 Almost Certainly 95
4 Almost Certainly 95
5 Almost Certainly 98
6 Almost Certainly 95
# 繪圖
ggplot(data, aes(x=text, y=value, fill=text, color=text)) + geom_violin(width=2.1, size=0.2) + theme(legend.position="none",axis.text.x=element_text(angle=20)) + xlab('') + ylab("Assigned Probability (%)")
結(jié)果如下:
美化
??雖然圖已經(jīng)畫出來了,但是這個圖現(xiàn)在是素顏的狀態(tài)拆火,這可是不符合大眾的審美了跳夭。所以涂圆,我們多多少少需要給這個圖化個妝,打扮一下來迷惑一下觀眾:
library(viridis)
ggplot(data, aes(x=text, y=value, fill=text, color=text)) + geom_violin(width=2.1, size=0.2) + xlab('') + ylab("Assigned Probability (%)") + scale_fill_viridis(discrete=TRUE) + scale_color_viridis(discrete=TRUE) + theme_minimal() + theme(legend.position="none") + coord_flip()
效果如下:
??圖好不好看币叹,配色起到很大的作用润歉,這里我們使用viridis
包的配色方案,該包還具有一個優(yōu)點就是在映射顏色時能夠讓接近的值具有相似的顏色颈抚,而彼此遠離的值具有更多不同的顏色踩衩,形成較大的感知范圍讓人易于區(qū)分。