首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R中使用pheatmap将色标锚定到每行的最小/最大值

如何在R中使用pheatmap将色标锚定到每行的最小/最大值
EN

Stack Overflow用户
提问于 2019-01-26 03:13:03
回答 1查看 792关注 0票数 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)。

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

EN

回答 1

Stack Overflow用户

发布于 2019-01-26 06:34:51

您可以按行缩放数据,如下所示:

代码语言:javascript
运行
复制
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))

然后pheatmap有参数cluster_cols,您可以将其设置为FALSE。将所有这些放在一起,最终热图中的0和10将变为深蓝色

代码语言:javascript
运行
复制
pheatmap(mat2, cluster_cols = F)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54371506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档