Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: MattОтветов: 3

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

Как показано на скриншоте выше, здесь я использовал функцию 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(), просто хочу внести ясность. scottyaz 25.10.2012
  • В худшем случае вы можете сохранить в формате pdf, открыть в редакторе векторной графики, таком как Inkscape или Illustrator, и отредактировать текст вручную. flies 20.07.2017

rheatmap

Ответы

Ответ 1 · рейтинг 2 · IRTFM

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

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 <-, вставьте код и нажмите "Ввод". (Если вы не сохраните это, оно будет сохраняться только до тех пор, пока продолжается сеанс.)

Ответ 2 · рейтинг 11 · milo

Функция 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")

Ответ 3 · рейтинг 1 · Nikolay

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы