heatmap.2 и отметки цвета

Я сделал тепловую карту в R, используя heatmap.2 и единственное, что я не могу понять, - это как контролировать наличие и маркировку отметок на цветовой кнопке. У меня есть пример ниже. То, что я хотел бы сделать, это иметь метки в начале и в конце цветовой клавиши для обозначения диапазона значений (в данном случае 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)
...
}

1 ответ

Решение

Аргумент "key.xtickfun" - это то, что вы хотите. Передайте в этот аргумент функцию, которая возвращает именованный список, элементы которого будут переданы функции "axis".

В этой функции я получаю "разрывы" из родительского фрейма (среда gplots), делаю их красивыми и сохраняю только первый и последний разрывы, которые являются минимальными и максимальными. Затем верните список с "at" и "label". "at" - это значения, возвращаемые функцией 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)
          })
Другие вопросы по тегам