单细胞:不同亚群的基因平均表达热图

  单细胞分群后,想看某些基因在不同cluster中的平均表达值,以及表达这些基因的细胞在不同cluster的占比。接触过Seurat的同学,应该都不会觉得难,因为在Seurat里面也就是调用一个函数的事。下面来具体看看。

绘图

  这里使用的数据来自SeuratData的pbmc3k,这里直接略过Seurat的常规操作,因为之前已经处理过并将Seurat对象保存为RDS,所以这里直接使用:

library(Seurat)

obj <- readRDS('pbmc3k.rds')
obj
An object of class Seurat
13714 features across 2700 samples within 1 assay
Active assay: RNA (13714 features, 2000 variable features)
 2 dimensional reductions calculated: pca, umap

  接着,直接使用DotPlot函数,即可绘制想要的图:

p <- DotPlot(obj, features=c('TP53', "PPBP", "S100A9", "IGLL5", "LYZ", "GNLY"), group.by='seurat_clusters')
p

结果如下:

  只需要输入想关注的基因列表和分组的列,DotPlot就会自动计算基因在不同分组中的平均表达值和基因表达的细胞占比并绘制热图。

美化

  这个图大概率不会出现在文章里面,就算有也更可能出现在附图里面。不过,虽然出镜率有些渺茫,但咱还是一视同仁。上面的图看起来有些素了,下面给他美化一下。这里就要强调一下ggplot2图层语法的厉害了,上面返回了ggplot的对象,我们只需在此基础修改一些元素即可:

p <- p + scale_color_gradientn(values= seq(0,1,0.2), colours = c('#330066','#336699','#66CC66','#FFCC33'))+theme_bw()
p

结果如下:

  上面的图经过修改颜色和主题后,审美上算是过得去了。但是,还是如前面提到的,这样的图很少机会出现在文章里面。也许,下面的图会有更高的出镜率。X轴代表不同分组,Y轴代表不同细胞类型,然后可以清楚地比较,两个组别下某个基因的平均表达以及表达基因的细胞占比情况。这样,处理所引起的基因表达变化情况,在不同的细胞亚群间一目了然。


往期绘图

可视化:bubble
可视化:scatterplot
可视化:barplot
可视化:泡泡图
可视化:小提琴图

推荐阅读更多精彩内容