平平無(wú)奇小提琴圖
library(ggplot2)
p1 = ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_violin(aes(fill = Species))+
theme_bw()
p2 = ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_violin(aes(fill = Species),scale = "width")+
theme_bw()
p3 = ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_violin(aes(fill = Species),scale = "width",trim = F)+
theme_bw()
library(patchwork)
p1+p2+p3+plot_layout(guides = "collect")
其中涉及到的兩個(gè)參數(shù):
scale 默認(rèn)count酷含,點(diǎn)的數(shù)量決定小提琴圖的胖瘦,scale = “width”是讓多個(gè)小提琴顯示同樣的最大寬度撬腾。
trim 默認(rèn)T 會(huì)修剪小提琴的上下尖尖,畫出來(lái)的圖范圍就是數(shù)據(jù)分布范圍恢恼。trim = F 畫出來(lái)的圖上下兩端是尖的民傻,顏值變高了。
這兩個(gè)參數(shù)很有意思厅瞎,我最近畫圖時(shí)發(fā)現(xiàn)饰潜,之前寫的代碼套示例數(shù)據(jù)是沒看出問(wèn)題的,但是換了數(shù)據(jù)瓦特了啊和簸。
換了數(shù)據(jù)再畫
load("plot_dat.Rdata")
ggplot(dat,aes(Cell_type,Proportion,fill = Group)) +
geom_violin(trim = F) +
theme_bw()
哈彭雾,這個(gè)圖存在好幾個(gè)問(wèn)題。锁保。薯酝。
1.小提琴為什么是一條線,琴呢爽柒?
就是因?yàn)闄M坐標(biāo)數(shù)量太多吴菠,所以小提琴被擠扁了,調(diào)圖的寬度沒用浩村。scale參數(shù)你值得擁有
2.我畫的是cibersort免疫浸潤(rùn)的結(jié)果做葵,怎么可能會(huì)有負(fù)數(shù)?
神奇的trim = F 的極端場(chǎng)景就是這個(gè),很有歧義心墅。因?yàn)榉酥暗氖纠a酿矢,帶有trim = F,一開始沒注意它怎燥,現(xiàn)在看到瘫筐,會(huì)讓人誤解數(shù)據(jù)分布范圍,用的時(shí)候得比較一下和正確的數(shù)據(jù)分布范圍查的多不多铐姚,不能為了美觀喪失正確性安吒巍!
ggplot(dat,aes(Cell_type,Proportion,fill = Group)) +
geom_violin(trim = F,scale = "width") +
theme_bw() +
theme(axis.text.x = element_text(angle=80,hjust = 1))+
ggtitle("離離原上譜")
3.橫坐標(biāo)有覆蓋隐绵。
這個(gè)倒是簡(jiǎn)單哦之众。斜一下就行了。
所以正確的代碼應(yīng)該是
ggplot(dat,aes(Cell_type,Proportion,fill = Group)) +
geom_violin(scale = "width") + #trim 默認(rèn)T依许,不寫也是一樣的
theme_bw() +
theme(axis.text.x = element_text(angle=80,hjust = 1))
哈哈酝枢!這個(gè)問(wèn)題難度大不,反正我是排查了好一會(huì)悍手。