在使用Seurat時(shí)荧降,經(jīng)常需要對(duì)不同分類(lèi)的樣本在同一畫(huà)布上進(jìn)行可視化狞甚,可以非常方便地通過(guò)其DimPlot()函數(shù)的goupyby和spliby等參數(shù)實(shí)現(xiàn)等曼,例如對(duì)照組和實(shí)驗(yàn)組,如下:
但是在python的環(huán)境中损离,scanpy的sc.pl.umap()
并沒(méi)有這么靈活的參數(shù)哥艇。所以需要通過(guò)循環(huán)解決問(wèn)題,sc.pl.umap()
中的color參數(shù)類(lèi)似于Seurat的groupby僻澎,但其groups參數(shù)完全沒(méi)有Seurat的splitby強(qiáng)大貌踏。所以我們可以通過(guò)python的Matplotlib包的plt.subplots()
函數(shù)十饥,結(jié)合循環(huán)將分組內(nèi)容一一繪制,再多個(gè)分組圖合并在一起祖乳,就實(shí)現(xiàn)相同目的逗堵。
下面提供一個(gè)參考:
#data.obsm['umap']=data.obsm['spatial']
#data.obs.refined_pred=data.obs.refined_pred.astype('str') # 數(shù)字轉(zhuǎn)為字符串
celltype=data.obs['refined_pred'].unique().tolist() # refined_pred是細(xì)胞注釋
fig, axes = plt.subplots(4, 5, figsize=(18, 12), tight_layout=True,dpi=600) # nrows和ncols取決于想要的畫(huà)圖個(gè)數(shù)
x=0;y=0
for i in celltype: #celltype為任何需要并列繪制的list
fig = sc.pl.umap(data, color='refined_pred', groups=i, ax=axes[y][x],show=False)
x = x +1 if x <4 else 0
y = y +1 if y <3 and x ==0 else y
plt.show()
#plt.savefig('./split.png')
以上這個(gè)例子是用于空間組分圖繪制不同細(xì)胞類(lèi)型分布的圖譜,對(duì)應(yīng)普通的單細(xì)胞數(shù)據(jù)眷昆,例如實(shí)驗(yàn)組 vs 對(duì)照組蜒秤、scRNA數(shù)據(jù) vs scATAC數(shù)據(jù)也是一樣的(循環(huán)+共同繪制)。而且值得注意的是亚斋,空間組之所以不采用官方推薦的scanpy.pl.spatial()函數(shù)作媚,是因?yàn)檫@個(gè)函數(shù)對(duì)于純粹的scanpy數(shù)據(jù)可以很好的適配,但是對(duì)于其他空間組工具包帅刊,例如spateo纸泡、spGCN等等,就不適配厚掷,還是原始的sc.pl.umap()更香弟灼,具有更加廣的應(yīng)用面和適配性,不過(guò)注意調(diào)整adata.obsm['umap']=adata.obsm['spatial']
就可冒黑。