查看原文
其他

R函数实现单细胞StackedVlnPlot

The following article is from seqyuan Author ahworld

上图这样的单细胞StackedVlnPlot在高分文章中出现比较多,比较适合美观的展示多个marker gene的表达分布,而目前Seurat画小提琴图的函数VlnPlot是不能实现这样堆叠效果的。

我们在《Seurat结果转为scanpy可处理对象》中介绍过scanpy中的sc.pl.stacked_violin函数可以实现StackedVlnPlot的功能:

我们在《生信工程师的自我修养》中介绍过怎样修改scanpysc.pl.stacked_violin实现小提琴图横放堆叠的效果:

Seurat结果转loom格式让很大一部分人望而却步,选择了放弃画StackedVlnPlot,或者宁愿用AI实现。

所以,今天分享给大家一个用R原生函数实现StackedVlnPlot的方法,需要用到patchwork包,代码如下:

library(Seurat)
library(ggplot2)

modify_vlnplot<- function(obj,
feature,
pt.size = 0,
plot.margin = unit(c(-0.75, 0, -0.75, 0), "cm"),
...) {
p<- VlnPlot(obj, features = feature, pt.size = pt.size, ... ) +
xlab("") + ylab(feature) + ggtitle("") +
theme(legend.position = "none",
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks.x = element_blank(),
axis.ticks.y = element_line(),
axis.title.y = element_text(size = rel(1), angle = 0, vjust = 0.5),
plot.margin = plot.margin )
return(p)
}

## main function
StackedVlnPlot<- function(obj, features,
pt.size = 0,
plot.margin = unit(c(-0.75, 0, -0.75, 0), "cm"),
...) {

plot_list<- purrr::map(features, function(x) modify_vlnplot(obj = obj,feature = x, ...))
plot_list[[length(plot_list)]]<- plot_list[[length(plot_list)]] +
theme(axis.text.x=element_text(), axis.ticks.x = element_line())

p<- patchwork::wrap_plots(plotlist = plot_list, ncol = 1)
return(p)
}

这个StackedVlnPlot是对SeuratVlnPlot方法的封装,使用方法同VlnPlot,输入数据是Seurat对象,让我们看下效果:

StackedVlnPlot(sdata, c('Retnlg', 'Pygl', 'Anxa1', 'Igf1r', 'Stfa2l1'), pt.size=0, cols=my36colors)

如果需要对图做细微的调整,在了解ggplot2的基础上,可以尝试对上面的函数进行定制修改。

配色方案也一并分享:

my36colors <-c('#E5D2DD', '#53A85F', '#F1BB72', '#F3B1A0', '#D6E7A3', '#57C3F3', '#476D87',
'#E95C59', '#E59CC4', '#AB3282', '#23452F', '#BD956A', '#8C549C', '#585658',
'#9FA3A8', '#E0D4CA', '#5F3D69', '#C5DEBA', '#58A4C3', '#E4C755', '#F7F398',
'#AA9A59', '#E63863', '#E39A35', '#C1E6F3', '#6778AE', '#91D0BE', '#B53E2B',
'#712820', '#DCC1DD', '#CCE0F5', '#CCC9E6', '#625D9E', '#68A180', '#3A6963',
'#968175'
)


References

[1] https://divingintogeneticsandgenomics.rbind.io/post/stacked-violin-plot-for-visualizing-single-cell-data-in-seurat/
[2] https://rpubs.com/DarrenVan/628853


往期回顾

单细胞交响乐4-scRNA的归一化

scRNA-seq Clustering

Cell Ontology:解析细胞类型新维度

学生信只做数据分析不做湿实验发不了高分文章吗

外显子测序被Science评为年度十大突破的时候你在做什么

你还在花三五万做一个单细胞转录组吗?

单细胞技术在临床上的应用方向

单细胞交响乐3-scRNA的细胞质控

生信技能树知识整理实习生招募






如果你对单细胞转录组研究感兴趣,但又不知道如何入门,也许你可以关注一下下面的课程



看完记得顺手点个“在看”哦!


生物 | 单细胞 | 转录组丨资料每天都精彩

长按扫码可关注

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存