pheatmap行标签顺序大调整

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pheatmap行标签顺序大调整相关的知识,希望对你有一定的参考价值。

参考技术A 在科学论文中,我们经常要用到热图。我们在 热图在单细胞数据分析中的应用 比较系统地介绍了热图的一般规则。但是在实际操作中还是会遇到一些细节问题,如标签顺序。

我们知道一个好的热图,要能反映出数据规律,直觉上就是要有明显的色块。那么色块是如何来的呢?和行与列的顺序有关。如一张好的热图大概率是这样的:

但是如果我们调整顺序,他可以变成这样的:

对我们来说重要的是获得这个顺序,然后指定给绘图函数。我们以熟悉的pheatmap为例来探索一下。首先生成示例数据:

看看数据长什么样子:

默认参数:

这时的顺序是按聚类顺序来的。

不聚类时,行顺序就是我们的输入矩阵的数据顺序。

我们把行名按字母排个序。

这时候就是字母序了。

有时候,我们只想留下聚类结果,并不想展示聚类轴,怎么办呢?

最后,我们把这四张图拼在一起,对读着有个交代。

DoHeatmap clustering specific genes and not top x genes #2261
继续来看pheatmap那些有趣的事情
热图如何去掉聚类树的同时保留聚类的顺序?
【r<-ggplot2】cowplot在网格中排列图形
Arranging plots in a grid
https://github.com/satijalab/seurat/issues/2222

在 R 中的 pheatmap 单元格中显示原始数字

【中文标题】在 R 中的 pheatmap 单元格中显示原始数字【英文标题】:Showing raw numbers in cells of pheatmap in R 【发布时间】:2022-01-22 13:03:48 【问题描述】:

好吧,我确定我有一个非常基本的问题,但我对 R 语言太陌生,无法解决它。我正在使用 pheatmap 创建一个热图,并希望在每个单元格中显示原始数字,但也对行使用缩放。问题是当我使用 display_numbers = nrow(theatmap_data) 时,它只显示转换后的缩放数字而不是原始值。

这是片段

library(pheatmap)
t(heatmap_data) -> theatmap_data
  
pheatmap((theatmap_data),cluster_rows= FALSE, cluster_cols = FALSE,
           scale ="row", display_numbers = nrow(theatmap_data))

【问题讨论】:

我假设您使用的是pheatmap 包,所以添加了代码。 【参考方案1】:

如果要在单元格内显示原始值,可以使用以下代码:

library(pheatmap)

# Generate a simple matrix
set.seed(1234)
theatmap_data <- matrix(runif(24), ncol=4)
rownames(theatmap_data) <- paste0("G", 1:6)
colnames(theatmap_data) <- paste0("S", 1:4)

# Show the content of the matrix
print(theatmap_data)
#           S1          S2        S3         S4
# G1 0.1137034 0.009495756 0.2827336 0.18672279
# G2 0.6222994 0.232550506 0.9234335 0.23222591
# G3 0.6092747 0.666083758 0.2923158 0.31661245
# G4 0.6233794 0.514251141 0.8372956 0.30269337
# G5 0.8609154 0.693591292 0.2862233 0.15904600
# G6 0.6403106 0.544974836 0.2668208 0.03999592

# display_numbers = matrix of rounded row values
pheatmap((theatmap_data),cluster_rows= FALSE, cluster_cols = FALSE,
           scale ="row", display_numbers = round(theatmap_data,2))

【讨论】:

谢谢!那效果很好。我想我不明白为什么当我尝试: display_numbers = nrow(theatmap_data) 它只显示缩放数字。但是使用 display_numbers = round(theatmap_data,2) 显示未缩放的数据。我还有很多东西要学。 @JeffNKC 嗨,杰夫。在 pheatmap 的帮助下:display_numbers: If this is a matrix (with same dimensions as original matrix), the contents of the matrix are shown instead of original values. 如果您觉得我的回答有用,请接受并投票。

以上是关于pheatmap行标签顺序大调整的主要内容,如果未能解决你的问题,请参考以下文章

热图中 x 轴上的对角线标签方向

用R中pheatmap画heatmap

用R包中heatmap画热图

R包pheatmap:用参数一步步详细绘制热图

R包pheatmap:用参数一步步详细绘制热图

R 数据可视化 —— 聚类热图 pheatmap