单细胞分析中小提琴图用途
小提琴图是一种在单细胞RNA测序数据分析中常用的可视化工具,它能够展示数据分布的密度估计,并且可以用于比较多个群组的基因表达水平。
比如在单细胞分析中,在进行质控前,会使用小提琴图可视化nFeature_RNA, nCount_RNA, percent.mt,辅助我们选择合适的阈值进行质控
# Visualize QC metrics as a violin plot
VlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
在可视化Marker基因的时候,VlnPlot也是非常常用的一种方法!
之前的推文有详细整理过ncount_RNA 和nFeature_RNA辅助过滤,那这期我们一起来学习了解一下VlnPlot小提琴图可视化marker基因!
VlnPlot可视化辅助质控
虽然之前的推文有详细整理过ncount_RNA 和nFeature_RNA辅助过滤,但是好像仅仅只介绍了一下数据以及阈值选择,没有介绍一下小提琴图的结果,所以补充一下
在小提琴图结果解析:
在小提琴图中,x轴代表不同的样本或细胞群组,y轴代表数值(如基因表达水平)。每个“小提琴”描述了一个群组中数值的分布情况。 中间较宽的部分表示数据点比较集中的区域,即大多数细胞的基因数量或RNA分子总数落在这个范围内。 两端较细的部分表示数据点较少的区域,即较少的细胞具有这些数值。 通过观察小提琴图的形状和分布,可以直观地看出数据的集中趋势、离散程度和潜在的异常值。
VlnPlot可视化marker基因
使用到的还是PBMC3k的数据,走完降维聚类分群之后,使用FindAllMarkers计算所有簇的Marker基因
#计算所有簇的Marker基因,并且可视化TOP5基因
# only.pos = TRUE,只关注上调;min.pct = 0.25,一个基因至少要在25%的细胞中表达
pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25, verbose = FALSE)
top5 = pbmc.markers %>% group_by(cluster) %>% top_n(n = 5, wt = avg_log2FC)
g = unique(top5$gene)
可视化结果浅析
首先选择一个基因进行可视化展示,并且将结果数据保存为一个变量,进行查看
p1 = VlnPlot(pbmc, features = "MS4A1")
p1
在小提琴图中,x轴代表不同的样本或细胞群组,y轴代表基因表达水平。通过观察各个群组的小提琴图形状和位置,可以了解MS4A1在不同细胞群组中的表达分布。 小提琴图中的宽度代表了各个表达水平的细胞数量。较宽的部分表示该表达水平的细胞较多,较窄或不存在的部分表示较少或没有细胞具有该表达水平。。 小提琴图的轮廓显示了数据的概率密度,而图中的点则代表细胞表达的数量,这些点有助于直观地看到数据的分布。 由图可得MS4A1基因在B细胞群组中表达量较高,而在其他细胞群组中表达量较低或不表达。
绘图数据概要
> class(p1)
[1] "patchwork" "gg" "ggplot"
通过class查看结果数据的类型,其中"patchwork"表示p1是一个经过patchwork处理的复合图形,而"gg"和"ggplot"表示它是基于ggplot2创建的图形对象。
数据(data): 一个包含2638行和2列的数据框架(data.frame)。用于生成小提琴图的数据集,其中每一行代表一个细胞。 可以通过 View(p1[[1]][["data"]])
查看,基于表达量排序之后可以看到是在B细胞中高表达
图层(layers):
表示构成图形的图层。在ggplot2中,图层可以包括几何对象(如点、线、面等),统计变换,数据映射等。 比例(scales):
定义了图形的比例尺,例如x轴和y轴的取值范围和断点。 导向(guides):
表示图形的辅助元素,如图例、颜色条等。 映射(mapping):
定义了数据如何映射到图形的美学属性上,例如颜色、形状、大小等。 主题(theme):
定义了图形的外观和风格,如字体、背景色、轴线等。 坐标(coordinates):
表示图形使用的坐标系统,例如笛卡尔坐标、极坐标等。 分面(facet):
表示图形是否使用了分面,分面可以将数据的子集并排或堆叠显示。 环境(environment):
存储了图形的计算环境,可能包含用于计算图形的变量和函数。 标签(labels):
可能包含图形的标签信息,例如轴标题、图例标题等。
常用参数
除了导入结果数据的object以及需要绘制的features基因集,还可以修改颜色和点的大小和透明度:
cols:用于绘制不同类别的小提琴图的颜色。
pt.size:图中代表单个细胞数据点的大小。
alpha:数据点的透明度。
选择需要展示的细胞群组以及分组信息:
idents:指定要在图中包括哪些细胞群组(例如,细胞类型)。默认情况下,包括所有群组。
sort:根据被绘制属性的平均表达量对身份类别(x轴上)进行排序。你也可以传递'increasing'或'decreasing'来改变排序方向。
group.by:根据对象元数据中的不同方式对细胞进行分组(例如,
orig.ident
)。split.by:对象元数据中的一个因子,用于分割图表。传递'ident'可以按细胞身份分割。
adjust:
geom_violin
的调整参数,用于调整小提琴图的形状。
选择用于可视化的数据——原始counts矩阵或者标准化后的data数据:
slot:从哪个槽中提取表达数据(例如 "counts" 或 "data")。
layer:从哪个层中提取表达数据(例如 "counts" 或 "data")。
log:是否对特征轴(通常是x轴)使用对数刻度。
默认是选择data数据进行可视化的,当需要选择counts矩阵进行可视化时,可以使用slot参数进行指定
#默认data数据可视化结果
VlnPlot(pbmc, features = c("NKG7", "PF4"))
#使用counts绘图
VlnPlot(pbmc, features = c("NKG7", "PF4"), slot = "counts", log = TRUE)
结果图美化的可选参数:
ncol:如果显示多个图表,设置列的数量。
split.plot:控制是为分割的每个组绘制多个还是单个小提琴形状。
stack:是否水平堆叠每个特征的图表。
combine:是否将图表组合成一个单一的patchworked ggplot对象。如果为FALSE,则返回一个ggplot列表。
fill.by:根据'feature'或'ident'对小提琴图进行着色。
flip:翻转图表方向(身份类别在x轴上)。
这些参数允许基于需求去自定义小提琴图的外观和展示方式,下期我们就具体来看看如何基于这些参数得到更加好看的小提琴图!