plot1cell:優(yōu)雅的可視化你的單細胞數(shù)據(jù)

簡介

plot1cell包提供了多種單細胞數(shù)據(jù)可視化的高級功能,可以基于Seurat分析結(jié)果對象直接進行可視化繪圖属桦,主要依賴于Seurat V4匠题,circlize,ComplexHeatmap和simplifyEnrichment等R包晤碘。

R包安裝

使用devtools包進行安裝:

devtools::install_github("TheHumphreysLab/plot1cell")
## or the development version, devtools::install_github("HaojiaWu/plot1cell")

## You might need to install the dependencies below if they are not available in your R library.
bioc.packages <- c("biomaRt","GenomeInfoDb","EnsDb.Hsapiens.v86","GEOquery","simplifyEnrichment","ComplexHeatmap")
BiocManager::install(bioc.packages)

dev.packages <- c("chris-mcginnis-ucsf/DoubletFinder","Novartis/hdf5r","mojaveazure/loomR")
devtools::install_github(dev.packages)
## If you can't get the hdf5r package installed, please see the fix here:
## https://github.com/hhoeflin/hdf5r/issues/94

示例數(shù)據(jù)演示

plot1cell包可以基于Seurat的細胞聚類分群注釋結(jié)果進行后續(xù)的可視化繪圖,在本教程中功蜓,我們使用 Kirita et al, PNAS 2020文章中的Seurat結(jié)果對象進行可視化演示园爷,該數(shù)據(jù)已上傳至GEO (GSE139107)數(shù)據(jù)庫中。

library(plot1cell)
iri.integrated <- Install.example() 
# Please note that this Seurat object is just for demo purpose and 
# is not exactly the same as the one we published on PNAS.
# It takes about 2 hours to run in a linux server with 500GB RAM and 32 CPU cores.
# You can skip this step and use your own Seurat object instead

1. 繪制細胞聚類分群和注釋信息的圈圖

在plot1cell包中霞赫,我們可以使用plot_circlize函數(shù)繪制細胞聚類分群的圈圖腮介,使用add_track函數(shù)添加不同細胞注釋信息。

###Check and see the meta data info on your Seurat object
colnames(iri.integrated@meta.data)  

###Prepare data for ploting 準備圈圖數(shù)據(jù)
circ_data <- prepare_circlize_data(iri.integrated, scale = 0.8 )
set.seed(1234)
# 設(shè)置細胞分群信息的顏色
cluster_colors<-rand_color(length(levels(iri.integrated)))
group_colors<-rand_color(length(names(table(iri.integrated$Group))))
rep_colors<-rand_color(length(names(table(iri.integrated$orig.ident))))

###plot and save figures
# 繪制細胞分群圈圖
png(filename =  'circlize_plot.png', width = 6, height = 6,units = 'in', res = 300)
plot_circlize(circ_data,do.label = T, pt.size = 0.01, col.use = cluster_colors ,bg.color = 'white', kde2d.n = 200, repel = T, label.cex = 0.6)
# 添加細胞群注釋信息
add_track(circ_data, group = "Group", colors = group_colors, track_num = 2) ## can change it to one of the columns in the meta data of your seurat object
add_track(circ_data, group = "orig.ident",colors = rep_colors, track_num = 3) ## can change it to one of the columns in the meta data of your seurat object
dev.off()
image.png

2. 繪制基因表達氣泡圖

使用complex_dotplot_single函數(shù)繪制單個基因在不同細胞分組中的基因表達氣泡圖端衰。

png(filename =  'dotplot_single.png', width = 4, height = 6,units = 'in', res = 100)
complex_dotplot_single(seu_obj = iri.integrated, feature = "Havcr1",groups = "Group")
dev.off()
image.png

設(shè)置groupssplitby參數(shù)對多個分組信息進行分割繪圖。

iri.integrated@meta.data$Phase<-plyr::mapvalues(iri.integrated@meta.data$Group, from = levels(iri.integrated@meta.data$Group), to = c("Healthy",rep("Injury",3), rep("Recovery",2)))
iri.integrated@meta.data$Phase<-as.character(iri.integrated@meta.data$Phase)

png(filename =  'dotplot_single_split.png', width = 4, height = 6,units = 'in', res = 100)
complex_dotplot_single(iri.integrated, feature = "Havcr1",groups = "Group",splitby = "Phase")
dev.off()
image.png
png(filename =  'dotplot_more_groups.png', width = 8, height = 6,units = 'in', res = 100)
complex_dotplot_single(seu_obj = iri.integrated, feature = "Havcr1",groups= c("Group","Replicates"))
dev.off()
image.png
iri.integrated@meta.data$ReplicateID<-plyr::mapvalues(iri.integrated@meta.data$Replicates, from = names(table((iri.integrated@meta.data$Replicates))), to = c(rep("Rep1",3),rep("Rep2",3), rep("Rep3",1)))
iri.integrated@meta.data$ReplicateID<-as.character(iri.integrated@meta.data$ReplicateID)

png(filename =  'dotplot_more_groups_split.png', width = 9, height = 6,units = 'in', res = 200)
complex_dotplot_single(seu_obj = iri.integrated, feature = "Havcr1",groups= c("Group","Replicates"), splitby = c("Phase","ReplicateID"))
dev.off()
### In this example, "Phase" is a splitby factor for "Group" and "ReplicateID" is a splitby factor for "Replicates".
image.png

使用complex_dotplot_multiple函數(shù)繪制多個基因的表達氣泡圖甘改。

png(filename =  'dotplot_multiple.png', width = 10, height = 4,units = 'in', res = 300)
complex_dotplot_multiple(seu_obj = iri.integrated, features = c("Slc34a1","Slc7a13","Havcr1","Krt20","Vcam1"),group = "Group", celltypes = c("PTS1" ,   "PTS2"  ,  "PTS3"  ,  "NewPT1" , "NewPT2"))
dev.off()
image.png

3. 繪制基因表達小提琴圖

使用complex_vlnplot_single函數(shù)繪單個基因在不同細胞分組中的基因表達小提琴圖旅东。

png(filename =  'vlnplot_single.png', width = 4, height = 6,units = 'in', res = 100)
complex_vlnplot_single(iri.integrated, feature = "Havcr1", groups = "Group",celltypes   = c("PTS1" ,   "PTS2"  ,  "PTS3"  ,  "NewPT1" , "NewPT2"))
dev.off()
image.png

類似的,我們同樣可以設(shè)置groupssplitby參數(shù)對多個分組信息進行分割繪圖十艾。

png(filename =  'vlnplot_single_split.png', width = 4, height = 6,units = 'in', res = 100)
complex_vlnplot_single(iri.integrated, feature = "Havcr1", groups = "Group",celltypes   = c("PTS1" ,   "PTS2"  ,  "PTS3"  ,  "NewPT1" , "NewPT2"), splitby = "Phase")
dev.off()
image.png
png(filename =  'vlnplot_multiple.png', width = 6, height = 6,units = 'in', res = 100)
complex_vlnplot_single(iri.integrated, feature = "Havcr1", groups = c("Group","Replicates"),celltypes   = c("PTS1" ,   "PTS2"  ,  "PTS3"  ,  "NewPT1" , "NewPT2"), font.size = 10)
dev.off()
image.png
png(filename =  'vlnplot_multiple_split.png', width = 7, height = 5,units = 'in', res = 200)
complex_vlnplot_single(iri.integrated, feature = "Havcr1", groups = c("Group","Replicates"),
                        celltypes   = c("PTS1" ,   "PTS2"  ,  "PTS3"  ,  "NewPT1" , "NewPT2"), 
                        font.size = 10, splitby = c("Phase","ReplicateID"), pt.size=0.05)
dev.off()
image.png

使用complex_vlnplot_multiple函數(shù)繪制多個基因的表達小提琴圖抵代。

png(filename =  'vlnplot_multiple_genes.png', width = 6, height = 6,units = 'in', res = 300)
complex_vlnplot_multiple(iri.integrated, features = c("Havcr1",  "Slc34a1", "Vcam1",   "Krt20"  , "Slc7a13", "Slc5a12"), celltypes = c("PTS1" ,   "PTS2"  ,  "PTS3"  ,  "NewPT1" , "NewPT2"), group = "Group", add.dot=T, pt.size=0.01, alpha=0.01, font.size = 10)
dev.off()
image.png

4. 繪制基因表達feature plot

使用complex_featureplot函數(shù)繪制不同基因在不同細胞分組中的基因表達feature plot。

png(filename =  'data/geneplot_umap.png', width = 8, height = 6,units = 'in', res = 100)
complex_featureplot(iri.integrated, features = c("Havcr1",  "Slc34a1", "Vcam1",   "Krt20"  , "Slc7a13"), group = "Group", select = c("Control","12hours","6weeks"), order = F)
dev.off()
image.png

5. 繪制差異基因表達熱圖

plot1cell包可以直接鑒定不同條件下細胞類型的差異表達基因忘嫉,并基于ComplexHeatmap包繪制差異基因的表達熱圖荤牍。

iri.integrated$Group2<-plyr::mapvalues(iri.integrated$Group, from = c("Control", "4hours",  "12hours", "2days",   "14days" , "6weeks" ),
to = c("Ctrl","Hr4","Hr12","Day2", "Day14","Wk6"))
iri.integrated$Group2<-factor(iri.integrated$Group2, levels = c("Ctrl","Hr4","Hr12","Day2", "Day14","Wk6"))

png(filename =  'heatmap_group.png', width = 4, height = 8,units = 'in', res = 100)
complex_heatmap_unique(seu_obj = iri.integrated, celltype = "NewPT2", group = "Group2",gene_highlight = c("Slc22a28","Vcam1","Krt20","Havcr1"))
dev.off()
image.png

6. 繪制差異基因overlap的集合圖

我們可以使用complex_upset_plot函數(shù)繪制不同組細胞群間差異表達基因overlap的集合圖。

png(filename =  'upset_plot.png', width = 8, height = 4,units = 'in', res = 300)
complex_upset_plot(iri.integrated, celltype = "NewPT2", group = "Group", min_size = 10, logfc=0.5)
dev.off()
image.png

7. 繪制細胞比例分布柱狀圖

我們可以使用plot_cell_fraction函數(shù)繪制不同組細胞比例分布的柱狀圖庆冕。

png(filename =  'cell_fraction.png', width = 8, height = 4,units = 'in', res = 300)
plot_cell_fraction(iri.integrated,  celltypes = c("PTS1" ,   "PTS2"  ,  "PTS3"  ,  "NewPT1" , "NewPT2"), groupby = "Group", show_replicate = T, rep_colname = "orig.ident")
dev.off()
image.png

8. 其他繪圖功能

使用help()函數(shù)查看該包的其他高級繪圖功能康吵。

help(package = plot1cell)

引用

Please consider citing our paper if you find plot1cell useful.
https://www.cell.com/cell-metabolism/fulltext/S1550-4131(22)00192-9
Cell Metab. 2022 Jul 5;34(7):1064-1078.e6.
Wu H, Gonzalez Villalobos R, Yao X, Reilly D, Chen T, Rankin M, Myshkin E, Breyer MD, Humphreys BD.
Mapping the single-cell transcriptomic response of murine diabetic kidney disease to therapies.

image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市访递,隨后出現(xiàn)的幾起案子晦嵌,更是在濱河造成了極大的恐慌,老刑警劉巖拷姿,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惭载,死亡現(xiàn)場離奇詭異,居然都是意外死亡响巢,警方通過查閱死者的電腦和手機描滔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來踪古,“玉大人含长,你說我怎么就攤上這事券腔。” “怎么了茎芋?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵颅眶,是天一觀的道長。 經(jīng)常有香客問我田弥,道長涛酗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任偷厦,我火速辦了婚禮商叹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘只泼。我一直安慰自己剖笙,他們只是感情好,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布请唱。 她就那樣靜靜地躺著弥咪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪十绑。 梳的紋絲不亂的頭發(fā)上聚至,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天,我揣著相機與錄音本橙,去河邊找鬼扳躬。 笑死,一個胖子當著我的面吹牛甚亭,可吹牛的內(nèi)容都是我干的贷币。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼亏狰,長吁一口氣:“原來是場噩夢啊……” “哼役纹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起骚揍,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤字管,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后信不,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘲叔,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年抽活,在試婚紗的時候發(fā)現(xiàn)自己被綠了硫戈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡下硕,死狀恐怖丁逝,靈堂內(nèi)的尸體忽然破棺而出汁胆,到底是詐尸還是另有隱情,我是刑警寧澤霜幼,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布嫩码,位于F島的核電站,受9級特大地震影響罪既,放射性物質(zhì)發(fā)生泄漏铸题。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一琢感、第九天 我趴在偏房一處隱蔽的房頂上張望丢间。 院中可真熱鬧,春花似錦驹针、人聲如沸烘挫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饮六。三九已至,卻和暖如春苛蒲,著一層夾襖步出監(jiān)牢的瞬間喜滨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工撤防, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棒口。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓寄月,卻偏偏與公主長得像,于是被迫代替她去往敵國和親无牵。 傳聞我的和親對象是個殘疾皇子漾肮,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容