如上面的屏幕截图所示,我在这里使用了函数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)
非常感谢: - )
答案 0 :(得分:9)
自@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")
答案 1 :(得分:2)
它是硬编码的。您需要在代码中更改它。它出现在绘制键的部分的中间位置,并且该行是:
else mtext(side = 1, "Value", line = 2)
这是创建密钥的热图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
,然后将源代码复制到编辑器,然后使用搜索功能查找“值”。将“Value”更改为其他内容(在引号中),然后键入heatmap.2 <-
并粘贴代码并点击return。 (除非您保存此内容,否则只有在会话继续时才会保留。)
答案 2 :(得分:1)
最近刚遇到同样的任务。现在有一个选项“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 上查看了源代码,它已经在那里修复了。