【问题标题】:heatmap.2 and color key tick marksheatmap.2 和颜色键刻度线
【发布时间】:2014-05-12 16:09:58
【问题描述】:

我在 R 中使用heatmap.2 制作了一个热图,唯一我不知道的是如何控制颜色键上刻度线的存在和标签。我有一个下面的例子。我想做的是在颜色键的开头和结尾有刻度线以指示值的范围(在本例中为 0-1),而不是 6 个刻度线,标签分别位于 0、0.4 和 0.8 处。我确信有一种简单的方法可以控制它,但我似乎找不到它。

library('gplots')

data <- c(0, 0.1, 0.1, 0.2, 0.2, 0.7, 0.7, 0.8, 1)
matr <- matrix(data, 3, 3)

heatmap.2(matr, trace="none", density.info="none")

编辑:

我能找到的唯一解决方法是直接更改 heatmap.2 本身以接受其他参数,因为这似乎是硬编码的(在我的情况下,我想为颜色键添加最小和最大范围)。

原始热图.2

heatmap.2 <-function (...)
{
...
lv <- pretty(breaks)  # line 362
...
}

改为:

heatmap.2 <-function (..., xMin = NULL, xMax = NULL, ...)
{
...
if(is.null(xMin)) lv <- pretty(breaks)
else lv <- c(xMin, xMax)
...
}

【问题讨论】:

  • 您可能无法发布图片,但您一定可以发布Great reproducible example
  • 似乎被标记的实际滴答声因一台用户/计算机与另一台用户/计算机不同。当我运行上面的代码时,我得到了标签,正如我提到的,在 0、0.2、0.6 和 1,而当 Henrik 这样做时,他得到了 0、0.4 和 0.8 的标签。也许相关,但我使用的是 R V3.0.3 和 gplots 2.12.1。

标签: r heatmap color-key


【解决方案1】:

“key.xtickfun”参数是你想要的。向此参数传递一个函数,该函数返回一个命名列表,其元素将传递给“轴”函数。

在函数中,我从父框架(gplots 环境)获取“中断”,使它们变得漂亮,并且只保留第一个和最后一个中断,即最小值和最大值。然后,返回一个带有“at”和“labels”的列表。 “at”是从在中断处调用的 scale01 函数(也来自父框架)返回的值。 “标签”是标签,应该是中断本身。

heatmap.2(matr, trace="none", density.info="none",
          key.xtickfun = function() {
            breaks = pretty(parent.frame()$breaks)
            breaks = breaks[c(1,length(breaks))]
            list(at = parent.frame()$scale01(breaks),
                 labels = breaks)
          })

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    相关资源
    最近更新 更多