0

我目前在 R 中使用 pheatmap 从单细胞数据创建基因表达的热图。

我目前遇到的问题是我似乎无法复制其他热图生成器(例如 Morpheus)中使用的相对色标:https ://software.broadinstitute.org/morpheus/

详细地说,在 Morpheus 中,色标可以锚定到每行的最小和最大表达式值。例如,假设色标很简单c('dark_blue', 'blue', 'bright_blue', 'white', 'bright_red', 'red', 'dark_red'),我提供了一个矩阵,看起来像t(data.frame(row1=c(0, 1, 2, 3, 4, 5, 6), row2=c(10, 11, 12, 13, 14, 15, 16))),Morpheus 将在第一行着色 0 深蓝色和 6 深红色,而在第二行着色 10 为深蓝色和 16 为深红色. 然后颜色条代表每行的相对最小值和最大值。

请注意,这与简单地缩放数据不同,这是我在 pheatmap 中所做的。问题是,如果我有类似的东西t(data.frame(row1=c(1, 2, 3, 4, 5, 6), row2=c(10, 0, 0, 0, 0, 0))),那么即使缩放数据也不允许将 6(缩放后约 1.34)着色为深红色,因为色标固定在最小值(缩放后约 -0.41)和最大值( ~2.04 缩放后)为整个热图。

我不怀疑有一种简单的方法可以实现这一点,但我无法通过查看基本文档来弄清楚。我也明白以这种方式显示热图不会允许基因之间的任何比较,但这对我的使用来说并不是特别重要。

4

1 回答 1

0

您可以像这样按行缩放数据:

mat <- t(data.frame(row1=c(0, 1, 2, 3, 4, 5, 6), row2=c(10, 11, 12, 13, 14, 15, 16)))
mat2 <- t(apply(mat, 1, scale))

然后pheatmapcluster_cols你可以设置为的参数FALSE。将它们放在一起,这将使最终热图中的 0 和 10 都是深蓝色

pheatmap(mat2, cluster_cols = F)

在此处输入图像描述

于 2019-01-25T22:34:50.723 回答