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)
})