Как изменить значение цветового ключа в тепловой карте.2?

введите здесь описание изображения

Как показано на скриншоте выше, здесь я использовал функцию 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)

Большое спасибо :-)


person Matt    schedule 24.10.2012    source источник
comment
Heatmap2() илиheatmap.2(), просто хочу внести ясность.   -  person scottyaz    schedule 25.10.2012
comment
В худшем случае вы можете сохранить в формате pdf, открыть в редакторе векторной графики, таком как Inkscape или Illustrator, и отредактировать текст вручную.   -  person flies    schedule 20.07.2017


Ответы (3)


Это жестко запрограммировано. Вам нужно будет изменить его в коде. Он появляется примерно посередине секции, которая рисует ключ, и линия выглядит так:

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 , затем скопировать исходный код в редактор, а затем использовать функцию поиска, чтобы найти «Значение». Измените «Значение» на что-то другое (в кавычках), затем введите heatmap.2 <-, вставьте код и нажмите «Ввод». (Если вы не сохраните это, оно будет сохраняться только до тех пор, пока продолжается сеанс.)

person IRTFM    schedule 24.10.2012
comment
О, вы только что сделали скриншот ColorKey, а не показали весь сюжет. Я внесу поправку. - person IRTFM; 25.10.2012
comment
Я просто пытался найти строку в исходном коде, но не смог. Можете ли вы получить доступ к исходному файлу? - person Matt; 25.10.2012
comment
Просто введите: heatmap.2 ... исходный код не скрыт. Я опубликую большое количество контекста. - person IRTFM; 25.10.2012
comment
Хорошо спасибо. Heatmap.3 в gist.github.com/3853004 тоже может работать, просто с большим количеством кодов. - person Matt; 25.10.2012

Функция Heatmap.2, возможно, изменилась с момента ответа @BondedDust, но теперь можно легко изменить метки клавиш 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")

После скриншота ключа

person milo    schedule 24.12.2014

Недавно столкнулся с такой же задачей. Теперь есть опция 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, и он там уже исправлен.

person Nikolay    schedule 07.03.2021