ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
116 stars 30 forks source link

Doheatmap常用参数及美化 #5430

Closed ixxmu closed 2 months ago

ixxmu commented 2 months ago

https://mp.weixin.qq.com/s/s46KSqHdTYYIwRRQEGf_MQ

ixxmu commented 2 months ago

Doheatmap常用参数及美化 by 单细胞天地

前情提要

在上期的推文细胞类群marker基因识别及可视化结尾的时候,提到了五种基本可视化Marker基因的方式

那这期一起来了解一下DoHeatmap函数的参数设置,以及在可视化marker基因有什么可以调整修改的地方。

DoHeatmap常用参数

常用参数

  • object:输入的seurat对象
  • features:要绘制的基因向量,可以是marker基因也可以需要可视化的基因集
  • cells:要绘制的细胞,默认是全部的细胞
  • slot = "scale.data":指定使用的数据,默认使用的是scale.data

分组信息及颜色

  • group.by = "ident":分组的依据,可以自行选择,默认是active.ident的内容
  • group.bar:添加分组信息的颜色条
  • group.colors:指定分组颜色条的颜色
  • group.bar.height = 0.02:缩放颜色条的高度

标签信息

  • label = TRUE:分组信息的标签
  • size = 5.5:文本字体的代销
  • hjust = 0:水平对齐
  • vjust = 0:垂直对齐
  • angle = 45:倾斜的角度

分隔线

  • draw.lines = TRUE:用线将各组信息分隔
  • lines.width = NULL:分隔线的宽度

DoHeatmap可视化及美化

获取marker基因直接可视化

用到的数据,还是seurat官网pbmc-3k的示例数据

走完基本的降维聚类分群,然后使用FindAllMarkers分析获取全部亚群的marker基因,然后选择top5的marker基因进行可视化

pbmc.markers <- FindAllMarkers(pbmc, only.pos = TRUE, min.pct = 0.25,  logfc.threshold = 0.25, verbose = FALSE)
top5 = pbmc.markers %>% group_by(cluster) %>% top_n(n = 5, wt = avg_log2FC)
g = unique(top5$gene)

#五种方式可视化marker基因
DoHeatmap(pbmc,features = g) + NoLegend()

直接可视化的结果图有些可以调整的点:

  • 标签角度:默认参数会导致部分标签信息展示不全
  • 颜色调整:默认颜色有点不好看
  • top5基因颜色在对应亚群没有很明显,因为没有scale所以展示没有很明显
  • 细胞数量太多,可以考虑抽样展示,不展示太具体的细胞
  • CD4 T的marker基因在naive和memory间亮度不明显,可能因为marker基因不够特异,后续可以再细分

1. 调整颜色和标签角度

因为默认参数的标签的角度是angle = 45所以是向右倾斜的,导致Platelet标签会显示不全

  • 可以改变一下横轴标签的排列顺序
  • 可以改变一下倾斜的角度
#改变标签的排列顺序
pbmc$cell_type <- factor( x= pbmc$cluster_by_counts ,c("Naive CD4 T""CD14+ Mono""Memory CD4 T",
                                                       "B""CD8 T","FCGR3A+ Mono""Platelet""NK""DC"))

#调整倾斜角度和颜色
DoHeatmap(pbmc,features = g,group.by = "cell_type",group.colors = mycolors,
          size = 3,angle = -50,hjust=0.8) + 
  scale_fill_gradientn(colors = c("white","grey","firebrick3"))

使用group.colors调整分组颜色——可以设置和umap图一样的颜色,使用scale_fill_gradientn调整热图的颜色,一般设置三个颜色

2. 重新scale并且抽样展示

正好看到群里有朋友在问,为什么选了top5基因进行可视化的时候,通常会发现展示的时候只剩下3到4个基因?

之前做细胞类群注释top5基因的dotplot的时候经常发现剩3个4个基因,我以为是这一步2000筛除了

因为DoHeatmap中默认slot = "scale.data" ,也就是用的数据是ScaleData后的结果数据集。而FindAllMarkers中默认slot = "data" ,也就是用的数据是NormalizeData后的数据集

因此就可能会造成DoHeatmap画热图时,不在前2000个高变基因中的marker不出现在热图中。可以基于top基因重新scale,并且抽样展示,不展示全部的细胞

#基于top基因重新scale并随机抽样
pbmc.Scale <- ScaleData(subset(pbmc,downsample=100),features = g )  

DoHeatmap(pbmc.Scale,
          features = g,
          group.by = "cell_type",size = 3,
          assay = 'RNA', label = T)+
  scale_fill_gradientn(colors = c("white","grey","firebrick3"))

3.是否展示图例

一般是默认展示图例的,如果不想展示的话可以加上NoLegend(),选择不展示图例

DoHeatmap(pbmc.Scale,
          features =  g,
          group.by = "cell_type",size = 3,
          assay = 'RNA', label = T)+NoLegend()+
  scale_fill_gradientn(colors = c("white","grey","firebrick3"))

小结

这期推文主要整理了一下DoHeatmap的常用参数,以及基于DoHeatmap的参数我们可以进行的一些图片调整与美化。

很多朋友在进行热图可视化的时候,会选择用到Complexheatmap包,进行美化。那下期可以一起来学习一下使用Complexheatmap绘制热图