我们在《单细胞天地》公众号给初学者整理了一个基于r编程语言的Seurat体系的单细胞转录组数据分析可视化专辑,是时候推荐给大家了:
前情提要
上期的推文
VlnPlot结果及常用参数浅析
整理介绍了一下小提琴图可视化marker基因,在结尾简单介绍了一下
可用于美化可视化结果的参数。
这期我们就一起来
使用一下这些参数,绘制更好看的小提琴图叭!
分析数据简介
因为分析中需要用到分组信息,而pbmc3k的数据集是单个样品,没有包含分组信息。所以
这期的示例数据换为
ifnb.SeuratData
的数据集
ifnb.SeuratData数据降维聚类分群的内容见推文——
ifnb数据集分析及注释对比
最后的
手动分群情况
:
获取top3的Marker基因:
markers
top3 = markers %>% group_by(cluster) %>% top_n(n = 3, wt = avg_log2FC)
g2 = unique(top3$gene)
基于VlnPlot参数美化小提琴图
1. 直接可视化
VlnPlot(sce.all.int, features = g2[1:6])
如果直接使用VlnPlot可视化,不设置参数,会得到每个基因单独展示的结果,不太易读
。
如果想将marker一起展示,就需要使用
stack参数
绘制堆叠小提琴图
2. 堆叠小提琴图
#使用paletteer包来调用awtools包中的调色板函数
library(paletteer)
color "awtools::bpalette"),
paletteer_d("awtools::a_palette"),
paletteer_d("awtools::mpalette"))
#stack=T绘制堆叠小提琴图
p1 group.by="celltype",
stack=T,cols=color
)
#去掉标签注释
p1+NoLegend()
可以使用
flip参数
进行翻转,使得结果更加易读
p1 group.by="celltype",
flip=T,stack=T,cols=color
)
p1+NoLegend()
3. 分组小提琴图
分组小提琴图是一种用于展示不同组别中数据分布情况的可视化图表,当有两个组别时可以很好的展示基因在两个组间的差异
使用
split.by
参数可选择按照某一分组变量(这里是 'stim')来分割数据
p2 split.by = 'stim',flip=T, add.noise = T,
cols = c("#78C2C4","#C73E3A"),) ;p2
从图中可以看到pDC相关基因主要在STIM组高表达,有些基因仅在STIM或者只在CTRL组表达
4. 分组分半小提琴图
也可以
在同一个图形中绘制多个分组的分布
,可以直观地比较不同组之间的数据分布情况,以便进行统计分析和推断。
使用
split.plot = T
生成每个分组的单独小提琴图
p pt.size=0,flip = T,add.noise = T,
split.by = 'stim',
group.by = "celltype",
cols = c("#78C2C4","#C73E3A"),
split.plot = T)
将分组以及分组且分半小提琴图拼图,可以更加直观的看到两个分组之间基因表达的差异
使用ggplot2进行美化
因为
VlnPlot是一个ggplot的对象,所以可以基于ggplot2进行美化
。或者
提取需要的数据,使用ggplot2直接绘制小提琴图
1. 美化VlnPlot结果
可以基于ggplot2的theme函数去调整坐标轴,设置文本颜色和大小、添加边框、调整间距等
p1 + theme_bw()+
theme(
axis.text.x.bottom = element_text(angle = 45,hjust = 1,vjust = 1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.position = "none",
axis.text.x = element_text(color = 'black',size = 11),
axis.text.y = element_blank(),
axis.title.x = element_text(color = 'black', size = 15),
axis.ticks.x = element_line(color = 'black'),
axis.ticks.y = element_blank(),
)