2025-06-23
星云圖是單(dan)細胞(bao)(bao)轉(zhuan)錄組研(yan)究中一種(zhong)獨(du)特(te)的可視化方法(fa),它通(tong)過(guo)將(jiang)不同細胞(bao)(bao)類(lei)型的空間(jian)分布與基因(yin)(yin)(yin)表達(da)模(mo)式(shi)相結合,形成多樣 “星(xing)云(yun)”,展現(xian)基因(yin)(yin)(yin)表達(da)異質(zhi)性、聚類(lei)狀態及細胞(bao)(bao)類(lei)型間(jian)差異關聯。相較(jiao)常規(gui)單(dan)細胞(bao)(bao)測序細胞(bao)(bao)類(lei)型可視化,它能更突出細胞(bao)(bao)類(lei)型間(jian)基因(yin)(yin)(yin)表達(da)整體差異,依基因(yin)(yin)(yin)表達(da)譜和(he)聚類(lei)信息繪制,借 “星(xing)云(yun)” 特(te)征(zheng)觀(guan)察聚類(lei)、識別模(mo)式(shi),助力挖掘(jue)分子特(te)征(zheng)與細胞(bao)(bao)分化關聯 。
這是單細(xi)(xi)胞(bao)(bao)(bao)轉錄組(zu)測序數據分析(xi)里的(de)(de)單細(xi)(xi)胞(bao)(bao)(bao)轉錄測序星云(yun)圖(tu),把不同細(xi)(xi)胞(bao)(bao)(bao)類型(像圖(tu)里的(de)(de) B 細(xi)(xi)胞(bao)(bao)(bao)、T 細(xi)(xi)胞(bao)(bao)(bao) 、肝細(xi)(xi)胞(bao)(bao)(bao)等(deng) )的(de)(de)基因(yin)表達信(xin)息,以(yi)類似 “星云(yun)” 的(de)(de)可視(shi)化形態呈現。不同色彩、形態的(de)(de) “星云(yun)” 區(qu)域,對應(ying)特定細(xi)(xi)胞(bao)(bao)(bao)類型(如(ru)標(biao)注(zhu)的(de)(de)各類細(xi)(xi)胞(bao)(bao)(bao)),能直觀(guan)展現細(xi)(xi)胞(bao)(bao)(bao)群(qun)體在(zai)基因(yin)表達層(ceng)面的(de)(de)異質(zhi)性,想自己動(dong)手(shou)繪制?安排!
1、數據準備
library(Seurat)
library(ggplot2)
Obj <- readRDS(‘你的SeuratObject.rds’)
group.by <- ‘celltype’ #細胞按什么(me)分類(lei)
Reduction <- ‘umap’#細(xi)胞(bao)用什么降維方法展示
df <- data.frame(dim1=Obj[[reduction]]@cell.embeddings[,1],
dim2=Obj[[reduction]]@cell.embeddings[,2],
cluster=Obj@meta.data[[group.by]])
2、繪(hui)制(zhi)”云圖”
p <- ggplot(df, aes(x = dim1, y = dim2)) +
stat_density_2d(
geom = "raster",
aes(fill = after_stat(density)),
contour = FALSE, n = 200
) +
viridis::scale_fill_viridis(option = "magma", direction = 1)+
coord_cartesian(expand = F) +
theme_void()
p
p
3、繪制”星(xing)圖”
p <- p+ geom_point(color = "#FFFFFFAA", size = 0.005, alpha = 0.2)+
theme(legend.position = "none")
p
4、添(tian)加細(xi)胞分類框(kuang)
remove_outlier <- function(x,y,proportion=0.9){
stopifnot(length(x)==length(y))
distance_to_centroid = (x-mean(x))^2 + (y-mean(y))^2
kept_site <- order(distance_to_centroid)[1:ceiling(length(x)*proportion)]
return(kept_site)
}
df2 <- lapply(unique(df$cluster),function(x){
new_df <- df[df$cluster==x,,drop=F]
return(new_df[remove_outlier(new_df$dim1,new_df$dim2),,drop=F])
}) |> dplyr::bind_rows()
p <- p + ggforce::geom_mark_hull(data=df2,
aes(x=dim1,y=dim2, group = cluster,label = cluster),
linewidth=0.8,
concavity = 5,
color='white',
con.colour='white',
con.type='straight',
label.fontsize=12,
label.colour='white',
label.fill='black',
expand=unit(3, "mm"),
linetype='f8')
p
這樣,細胞密度星云圖(tu)就(jiu)畫完了,是(shi)不(bu)是(shi)比(bi)普(pu)通的(de)Umap散點圖(tu)漂(piao)亮呢(ni)?但(dan)是(shi)要注意(yi)只有細胞分類在降(jiang)維圖(tu)上的(de)邊界很(hen)清晰星云圖(tu)才好看,不(bu)然的(de)話可是(shi)會(hui)丑(chou)哭的(de)呦~