繁体   English   中英

heatmap.2和颜色键刻度线

[英]heatmap.2 and color key tick marks

我已经使用heatmap.2在R中制作了一个热图,我唯一不知道的是如何控制颜色键上刻度线的存在和标记。 我下面有一个例子。 我想做的是在颜色键的开头和结尾都带有刻度线以指示值的范围(在这种情况下为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)
...
}

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

在函数中,我从父框架(gplots环境)获得“中断”,使其漂亮,并仅保留第一个和最后一个中断,即最小和最大。 然后,返回带有“ at”和“ labels”的列表。 “ at”是从break01调用的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)
          })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM