【问题标题】:How to change the color key value in heatmap.2?如何更改 heatmap.2 中的颜色键值?
【发布时间】:2021-03-08 02:10:20
【问题描述】:

如上图所示,我在这里使用了函数heatmap.2()

如何将颜色编码栏中的“”更改为任何其他名称

可以直接使用 gplots 包中的数据:

 library(gplots)

 data(mtcars)

 x  <- as.matrix(mtcars)

 rc <- rainbow(nrow(x), start=0, end=.3)

 cc <- rainbow(ncol(x), start=0, end=.3)

 heatmap.2(x, key=TRUE)

非常感谢:-)

【问题讨论】:

  • heatmap2() 或 heatmap.2(),只想说清楚。
  • 最坏的情况,您可以保存为 pdf,在 Inkscape 或 Illustrator 等矢量图形编辑器中打开,然后“手动”编辑文本。

标签: r heatmap


【解决方案1】:

自从@BondedDust 回答后,功能 heatmap.2 可能已经改变,但现在可以通过以下方式轻松更改 heatmap.2 键标签:

key.xlab="New value"

首先,上面的代码(使用标准颜色):

library(gplots)
data(mtcars)
x  <- as.matrix(mtcars)
heatmap.2(x,key=TRUE)

现在替换 x 和 y 标签:

library(gplots)
data(mtcars)
x  <- as.matrix(mtcars)
heatmap.2(x, key=TRUE , key.xlab="New value", key.ylab="New count")

【讨论】:

    【解决方案2】:

    它是硬编码的。您需要在代码中更改它。它出现在绘制键的部分的中途,线条是:

    else mtext(side = 1, "Value", line = 2)
    

    这是创建键的 heatmap.2 代码部分(至少直到出现“值”一词的位置):

     if (key) {
            par(mar = c(5, 4, 2, 1), cex = 0.75)
            tmpbreaks <- breaks
            if (symkey) {
                max.raw <- max(abs(c(x, breaks)), na.rm = TRUE)
                min.raw <- -max.raw
                tmpbreaks[1] <- -max(abs(x), na.rm = TRUE)
                tmpbreaks[length(tmpbreaks)] <- max(abs(x), na.rm = TRUE)
            }
            else {
                min.raw <- min(x, na.rm = TRUE)
                max.raw <- max(x, na.rm = TRUE)
            }
            z <- seq(min.raw, max.raw, length = length(col))
            image(z = matrix(z, ncol = 1), col = col, breaks = tmpbreaks, 
                xaxt = "n", yaxt = "n")
            par(usr = c(0, 1, 0, 1))
            lv <- pretty(breaks)
            xv <- scale01(as.numeric(lv), min.raw, max.raw)
            axis(1, at = xv, labels = lv)
            if (scale == "row") 
                mtext(side = 1, "Row Z-Score", line = 2)
            else if (scale == "column") 
                mtext(side = 1, "Column Z-Score", line = 2)
            else mtext(side = 1, "Value", line = 2)
     .... lots more code below
    

    您应该输入heatmap.2,然后将源代码复制到编辑器,然后使用搜索功能查找“值”。将“值”更改为其他内容(用引号括起来),然后输入heatmap.2 &lt;- 并粘贴代码并按回车键。 (除非您保存它,否则它只会在会话继续时持续存在。)

    【讨论】:

    • 哦,您只是截取了 ColorKey 的屏幕截图,而不是显示完整的情节。我会修改的。
    • 我只是试图在源代码中找到该行,但我找不到。可以访问源文件吗?
    • 只需输入:heatmap.2 ...源代码没有隐藏。我将发布大量上下文。
    • 好的,谢谢。 gist.github.com/3853004 中的 heatmap.3 也可以,只是代码很多。
    【解决方案3】:

    最近刚遇到同样的任务。现在有一个选项“key.title”来设置刻度入口的标题:

    library(gplots)
    data(mtcars)
    x  <- as.matrix(mtcars)
    heatmap.2(x, key.title = "New Title", key.xlab="New value", key.ylab="New count")
    

    很遗憾,如果入口没有直方图,它就无法正常传播:

    library(gplots)
    data(mtcars)
    x  <- as.matrix(mtcars)
    heatmap.2(x, key.title = "New Title", key.xlab="New value", key.ylab="New count")
    

    好吧,key.xlab 按预期工作,可以代替使用。

    我已经在 github 上查看了源代码,它已经在那里修复了。

    【讨论】:

      猜你喜欢
      • 2013-12-28
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多