函数实现_R函数实现单细胞StackedVlnPlot

本文分享了如何使用R原生函数实现StackedVlnPlot,以美观地展示单细胞数据中多个marker基因的表达分布。这种方法是对Seurat VlnPlot的封装,适用于Seurat对象,并且可以在了解ggplot2的基础上进行自定义修改。此外,还提供了配色方案参考。
摘要由CSDN通过智能技术生成
b27e4fa99ceeec442c239a9a855bf8b2.png

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

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

62b46582c61033e0d77f487b3cd9243a.png

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

0319108abe0fbf26aca288b13f2fb4c1.png

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

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

library(Seurat)
library(ggplot2)

modify_vlnplotfunction(obj,
feature,
pt.size = 0,
plot.margin = unit(c(-0.75, 0, -0.75, 0), "cm"),
...) {
p... ) +
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
StackedVlnPlotfunction(obj, features,
pt.size = 0,
plot.margin = unit(c(-0.75, 0, -0.75, 0), "cm"),
...) {

plot_listfunction(x) modify_vlnplot(obj = obj,feature = x, ...))
plot_list[[length(plot_list)]] theme(axis.text.x=element_text(), axis.ticks.x = element_line())

p1)
return(p)
}

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

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

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

配色方案也一并分享:

my36colors '#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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值