前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >胃癌单细胞数据集GSE163558复现(四):细胞分群可视化

胃癌单细胞数据集GSE163558复现(四):细胞分群可视化

作者头像
生信技能树jimmy
发布2024-06-25 20:41:12
1510
发布2024-06-25 20:41:12
举报
文章被收录于专栏:单细胞天地单细胞天地

前言

Hello小伙伴们大家好,我是生信技能树的小学徒”我才不吃蛋黄“。今天是胃癌单细胞数据集GSE163558复现系列第四期。第三期我们选择0.5分辨率,对细胞进行了分群注释。本期,我们将在第三期基础上使用多种方法可视化细胞和基因。

1.背景介绍

绘图质量一定程度上会直接影响文章的发表。站在审稿人的角度,好看的图会令人赏心悦目,不好看的图会成为巨大的减分项。好看的图往往逻辑清晰、布局合理、配色协调。

逻辑清晰与否主要体现在机制/流程图上。这张图是全文的重中之重,是作者科研能力、绘图水平和文章质量的集中体现。布局是否合理大图和小图都会涉及。小图需要我们去不断的调整坐标轴、标签、文字的位置、大小和粗细,还有图片的透明度、分组的顺序等等等等。配色协调考验的是绘图人的审美水平。笔者是直男审美,在学习R绘图的时候,数据和代码的问题往往能解决,但就是画的一手丑图。

特别是配色一言难尽,只能找爱逛街的师妹帮忙配色,或者去找高分文章的配色然后直接copy。由于是审美不在线,因此本系列所有的颜色代码,我就老老实实的copy。

看看第三期的图,配色是不是看着很舒服:

2.可视化

在分群注释之后,我们可以使用DimPlot、FeaturePlot、DoHeatmap、DotPlot等多种函数对细胞或基因可视化。

在绘图之前,我们首先创建新的工作目录,并读取第三期亚群注释后的数据:

代码语言:javascript
复制
dir.create("4-plot")
setwd('4-plot/')
sce.all=readRDS( "../3-Celltype/sce_celltype.rds")
sce.all

使用DimPlot函数展示T细胞("0","1")在tSNE图中的位置:

代码语言:javascript
复制
Idents(sce.all)
DimPlot(sce.all,label=T,
        reduction = "tsne",pt.size = 0.2,
        cells.highlight=list(
          T=WhichCells(sce.all, idents = c("0","1"))
        ),
        cols.highlight = c("red"),cols = "grey")

使用FeaturePlot函数展示T细胞maker基因('CD3D', 'CD3E', 'CD8A', 'CD4','CD2')的表达情况:

代码语言:javascript
复制
T_marker <- c('CD3D', 'CD3E', 'CD8A', 'CD4','CD2')
FeaturePlot(sce.all,features = T_marker,reduction = "tsne",cols = c("lightgrey" ,"#DE1F1F"),ncol=2,raster=FALSE)

使用DimPlot函数展示上皮细胞("5","11","12")在tSNE图中的位置:

代码语言:javascript
复制
DimPlot(sce.all,label=T,
        reduction = "tsne",pt.size = 0.2,
        cells.highlight=list(
          Epithelial=WhichCells(sce.all, idents = c("5","11","12"))
        ),
          cols.highlight = c("red"),cols = "grey")

使用FeaturePlot函数展示上皮细胞maker基因('EPCAM','KRT19','CLDN4')的表达情况:

代码语言:javascript
复制
Epithelial_marker <- c('EPCAM','KRT19','CLDN4')
FeaturePlot(sce.all,features = Epithelial_marker,reduction = "tsne",cols = c("lightgrey" ,"#DE1F1F"),ncol=2,raster=FALSE)

FeaturePlot函数展示maker基因的表达也可以帮助我们检查注释准确与否,因此,我们可以批量绘制多个maker基因:

代码语言:javascript
复制
genes_to_check = c('EPCAM','KRT19','CLDN4',  #上皮
                   'PECAM1' , 'CLO1A2', 'VWF',  #基质
                   'CD3D', 'CD3E', 'CD8A', 'CD4','CD2', #T
                   'CDH5', 'PECAM1', 'VWF',  #内皮
                   'LUM' , 'FGF7', 'MME',  #成纤维
                   'AIF1', 'C1QC','C1QB','LYZ',  #巨噬
                   'MKI67', 'STMN1', 'PCNA',  #增殖
                   'CPA3' ,'CST3', 'KIT', 'TPSAB1','TPSB2',#肥大
                   'GOS2', 'S100A9','S100A8','CXCL8', #中性粒细胞
                   'KLRD1', 'GNLY', 'KLRF1','AREG', 'XCL2','HSPA6', #NK
                   'MS4A1','CD19', 'CD79A','IGHG1','MZB1', 'SDC1',  #B
                   'CSF1R', 'CSF3R', 'CD68') #髓系

##批量画基因
FeaturePlot(sce.all, features =genes_to_check, 
            cols = c("lightgrey", 'red'),
            reduction = "tsne",
            ncol = 8 ) & NoLegend() & NoAxes() & theme(
              panel.border = element_rect(color = "black", size = 1)
            )

FeaturePlot除了可以展示单个基因,还可以把多个基因画在同一个图中。

Featureplot把两个基因画在同一个图中,看右上角可以发现黄色越深的地方两个基因叠加越多。这样可以看两个基因的共表达,是不是和免疫荧光图比较类似:

代码语言:javascript
复制
FeaturePlot(sce.all, features = c('S100A9','S100A8'),
            reduction = "tsne",
            cols = c("lightgrey", "green", "orange"),
            blend=T,blend.threshold=0)

Featureplot还可以把三个基因画在同一个图中:

代码语言:javascript
复制
# 提取tsne坐标
tsne_df <- as.data.frame(sce.all@reductions$tsne@cell.embeddings)
tsne_df$cluster <- as.factor(sce.all$celltype)
head(tsne_df)
# 提取基因表达数据并与tsne坐标合并
gene_df <- as.data.frame(GetAssayData(object = sce.all, slot = "data")[c('S100A9','S100A8','CXCL8'), ])

library(ggnewscale)
merged_df <- merge(t(gene_df), tsne_df, by = 0, all = TRUE)
head(merged_df)
colnames(merged_df)
ggplot(merged_df, vars = c("tSNE_1", "tSNE_2", 'S100A9','S100A8','CXCL8'), aes(x = tSNE_1, y = tSNE_2, colour = S100A9)) +
  geom_point(size=0.3, alpha=1) +
  scale_colour_gradientn(colours = c("lightgrey", "green"), limits = c(0, 0.3), oob = scales::squish) +
  new_scale_color() +
  geom_point(aes(colour = S100A8), size=0.3, alpha=0.7) +
  scale_colour_gradientn(colours = c("lightgrey", "blue"), limits = c(0.1, 0.2), oob = scales::squish) +
  new_scale_color() +
  geom_point(aes(colour = CXCL8), size=0.3, alpha=0.1) +
  scale_colour_gradientn(colours = c("lightgrey", "red"), limits = c(0, 0.3), oob = scales::squish)+
  theme_classic()

此外,我们还可以使用DoHeatmap函数绘制热图,展示每群细胞top基因:

代码语言:javascript
复制
Idents(sce.all)
Idents(sce.all) = sce.all$celltype
sce.markers <- FindAllMarkers(object = sce.all, only.pos = TRUE, 
                              min.pct = 0.25, 
                              thresh.use = 0.25)
write.csv(sce.markers,file='sce.markers.csv')
#sce.markers = read.csv('sce.markers.csv',row.names = 1)
library(dplyr) 
top5 <- sce.markers %>% group_by(cluster) %>% top_n(5, avg_log2FC)
#为了防止数据量太大不好出图,这里在每个亚群提取出来100个
DoHeatmap(subset(sce.all,downsample=100),top5$gene,size=3)+scale_fill_gradientn(colors=c("#94C4E1","white","red"))

使用DotPlot函数绘制气泡图:

代码语言:javascript
复制
top5_dotplot <- DotPlot(sce.all, features = top5$gene)+
  theme(axis.text.x = element_text(angle = 90, vjust = 1, hjust = 1))
top5_dotplot

结语

本期,我们使用了DimPlot、FeaturePlot、DoHeatmap、DotPlot等多种函数对细胞群和基因进行了可视化。下一期,我们将在此基础上,绘制饼图、堆积柱状图、箱线图、气泡图等,比较不同分组之间细胞比例差异。干货满满,欢迎大家持续追更,谢谢!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单细胞天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 1.背景介绍
  • 2.可视化
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档