前情提要
單細胞數(shù)據(jù)分析里面最基礎(chǔ)的就是降維聚類分群,參考前面的例子:人人都能學會的單細胞聚類分群注釋 ,這個大家基本上問題不大了,使用seurat標準流程即可,不過它默認出圖并不好看,詳見以前我們做的投票:可視化單細胞亞群的標記基因的5個方法,下面的5個基礎(chǔ)函數(shù)相信大家都是已經(jīng)爛熟于心了:
- VlnPlot(pbmc, features = c("MS4A1", "CD79A"))
- FeaturePlot(pbmc, features = c("MS4A1", "CD79A"))
- RidgePlot(pbmc, features = c("MS4A1", "CD79A"), ncol = 1)
- DotPlot(pbmc, features = unique(features)) + RotatedAxis()
- DoHeatmap(subset(pbmc, downsample = 100), features = features, size = 3)
上幾期的推文給大家分享了我對于用熱圖可視化及美化marker基因的內(nèi)容
接下來一起來了解一下Dotplot可視化Marker基因吧。
Dotplot結(jié)果圖解析
在進行細胞亞群注釋的時候,可以使用Dotplot可視化收集整理的基因集,來輔助我們進行細胞亞群的判斷

(PS : 可以看到我們收集整理的基因的特異性都非常好,絕大部分都有單細胞亞群的排他性 ,比如9群是CPA3代表的mast細胞,它在mast亞群里面的幾乎是百分百表達,但是在其他亞群都是不表達!)
如果關(guān)注單個基因的話,也可以只查看單個基因在不同亞群的表達情況,在單細胞水平看指定基因的表達量差異情況分享的文章中就有對某個基因進行可視化展示
DotPlot(sce.all.int, features = c("MTIF2"), group.by = "celltype")

(PS ; 因為MTIF2這個基因并不是已知的各個單細胞亞群特征基因,所以可以看到它很難有排他性,而且它即使是在肝細胞里面也就是30%的表達比例,只不過是肉眼看起來好像是跟前面的百分比一樣的效果,所以大家務必注意圖例!)
Dotplot結(jié)果圖上會展示出來Average Expressed以及Percent Expressed,及基因的平均表達量(點的顏色)以及表達的百分比(點的大?。?/strong>
通過將繪圖結(jié)果保存為一個變量,可以看到里面的保存的用于畫圖的數(shù)值
p = DotPlot(sce.all.int, features = c("MTIF2"), group.by = "celltype")
View(p)

其中data數(shù)據(jù)中就包含了Average Expressed、Percent Expressed以及Average Expressed scaled

在推文務為有補于世 | 單細胞之DotPlot的表達量哪來的?整理了平均表達量Average Expressed的計算方法

1. 簡單嘗試計算平均表達量-Average Expressed:查看B細胞亞群里面MTIF2基因的平均表達量
取出B細胞亞群,獲取B細胞亞群里面MTIF2基因原始表達矩陣,計算平均表達量
#average expressed
sce.B = sce.all.int[, sce.all.int$celltype %in% c( 'Bcell')]
gene_expression <- sce.B[["RNA"]]$counts["MTIF2", ]
# 計算平均表達量,忽略NA值
average_expression <- mean(gene_expression/sce.B$nCount_RNA*10000, na.rm = TRUE)


2. 計算基因在不同亞群里面的表達百分比Percent Expressed
統(tǒng)計并整理基因在不同細胞亞群的表達與否情況,然后計算表達數(shù)量占全部細胞亞群數(shù)量的百分比
#pct.express計算方式
MTIF2 = sce.all.int@assays$RNA$data["MTIF2",]>0
t(table(MTIF2,sce.all.int$celltype))
data <- data.frame(
CellType = c("Bcell", "cycle", "endothelial", "epithelial", "hepatocytes", "macrophages", "mast", "myeloids", "myofibroblasts", "Tcell"),
MTIF2_FALSE = c(3053, 1810, 3609, 1975, 6294, 5509, 186, 10335, 1131, 7414),
MTIF2_TRUE = c(355, 411, 448, 446, 3040, 1154, 7, 1370, 144, 503)
)
# 計算每個細胞亞群中總細胞數(shù)
data$TotalCells <- data$MTIF2_FALSE + data$MTIF2_TRUE
# 計算每個細胞亞群中MTIF2的表達占比,并添加到data表格中
data$PercentExpressed <- (data$MTIF2_TRUE / data$TotalCells)*100


在畫圖展示的labels中,x軸是我們選擇展示的基因,y軸identity是細胞亞群,點的大小是由pct.exp決定的,顏色是由avg.exp.scaled決定的

關(guān)于avg.exp.scaled的計算沒有去嘗試,大家感興趣的可以看一下Dotplot函數(shù)的具體計算方式

Dotplot常用參數(shù)

除了輸入數(shù)據(jù)(object)、基因集(features)以及分組信息(group.by)和分割參數(shù)(split.by)這些常用參數(shù)外,還有一些和點的顏色大小以及scale范圍相關(guān)的參數(shù)
點的顏色及縮放大小
cols:
繪圖顏色——可以是RColorBrewer包中的調(diào)色板名稱,也可以是自定義的漸變的兩種顏色,或者是定義多個漸變的三種以上顏色(如果設(shè)置了split.by)。

dot.min:
繪制最小點的細胞分數(shù)(默認為0),所有表達給定基因的細胞組少于此分數(shù)的將不繪制點。dot.scale:
氣泡大小的縮放比例,類似于cex參數(shù),默認是6,可以通過這個參數(shù)調(diào)節(jié)各個氣泡大小之間差異程度

scale:
確定數(shù)據(jù)是否縮放,TRUE為默認。scale.by:
通過'size'或'radius'兩種方式縮放點的大小,默認為"radius"。scale.min:
設(shè)置縮放的下限,使用NA為默認值。scale.max:
設(shè)置縮放的上限,使用NA為默認值。
使用默認參數(shù)繪圖
具體繪圖及美化還是使用pbmc-3k的注釋分群后的示例數(shù)據(jù),使用FindAllMarkers
查找并獲取top5的Marker基因進行可視化
#top5 marker基因獲取
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)
可以先看看直接使用默認參數(shù),不調(diào)節(jié)展示的情況
DotPlot(pbmc, features = g)

可以看到features展示列全部擠在了一起,不便于閱讀。所以可以對采用參數(shù)傾斜展示基因,或者將基因和細胞亞群調(diào)換位置
1. 調(diào)節(jié)features的排列角度
DotPlot(pbmc, features = g) + RotatedAxis()

2.將features和identity調(diào)換位置
DotPlot(pbmc, features = g) + coord_flip()+ RotatedAxis()

小結(jié)
這期簡單了解了一下Dotplot展示的Average Expressed以及Percent Expressed計算方式,以及Dotplot常用參數(shù)
最后簡單的使用默認參數(shù)展示了top5的marker基因,使用參數(shù)傾斜展示基因,或者將基因和細胞亞群調(diào)換位置對結(jié)果圖進行簡單的調(diào)整
Dotplot可調(diào)節(jié)的點還有很多,下期一起來了解一下基于Dotplot函數(shù)可視化的美化(以及它的多種變形操作,比如下面的圖E就可以直接使用上面的dotplot函數(shù)的數(shù)據(jù) )