Перемещение цветовой клавиши в R heatmap.2 (функция пакета gplots)

Я уже пару раз читал справочное руководство для heatmap.2, а также в различных онлайн-уроках, которые я не читал о способе перемещения цветной клавиши в другое положение. Теперь мне интересно, если это вообще возможно?

Клавиша цвета находится в левом верхнем углу по умолчанию, если вы используете функцию heatmap.2 из пакета gplots.

2 ответа

Решение

Положение каждого элемента в heatmap.2 сюжет можно контролировать с помощью lmat, lhei а также lwid параметры. Они проходят мимо heatmap.2 к layout команда как:

layout(mat = lmat, widths = lwid, heights = lhei)

lmat это матрица, описывающая, как экран должен быть разбит. По умолчанию heatmap.2 делит экран на сетку из четырех элементов, поэтому lmat матрица 2x2 Число в каждом элементе матрицы описывает порядок построения следующих четырех графиков. Heatmap.2 отображает свои элементы в следующем порядке:

  1. Тепловая карта,
  2. Строка дендрограммы,
  3. Колонка дендрограммы,
  4. ключ

так по умолчанию lmat является:

> rbind(4:3,2:1)
     [,1] [,2]
[1,]    4    3
[2,]    2    1

Например, если вы хотите поместить ключ под тепловую карту, вы должны указать:

> lmat = rbind(c(0,3),c(2,1),c(0,4))
> lmat
     [,1] [,2]
[1,]    0    3
[2,]    2    1
[3,]    0    4

lwid а также lhei являются векторами, которые определяют высоту и ширину каждой строки и столбца. По умолчанию c(1.5,4) для обоих. Если вы измените lmat вам придется или, возможно, захотеть изменить их. Для приведенного выше примера, если мы хотим, чтобы все остальные элементы были одинакового размера, но в нижней части нужна тонкая цветная клавиша, мы можем установить

>lwid = c(1.5,4)
>lhei = c(1.5,4,1)

Затем мы готовы построить тепловую карту:

>heatmap.2(x,...,lmat = lmat, lwid = lwid, lhei = lhei)

Это построит тепловую карту с дендрограммой столбца над тепловой картой, дендрограммой строки слева и ключом внизу. К сожалению, заголовки и метки ключа жестко закодированы.

увидеть ?layout для более подробной информации о том, как layout работает.

В довольно длинном коде указаны определенные регионы, определенные вызовами par heatmap.2 и я не видел его оригинального автора или каких-либо "ревизоров" вокруг этих частей, хотя они иногда посещают R-help. Основные размеры графика задаются 2-элементным вектором. margins, Вот несколько мест, где вам может потребоваться внести изменения:

#1) 
if (!missing(RowSideColors)) {
    par(mar = c(margins[1], 0, 0, 0.5))
    image(rbind(1:nr), col = RowSideColors[rowInd], axes = FALSE)

#2)
if (!missing(ColSideColors)) {
    par(mar = c(0.5, 0, 0, margins[2]))
    image(cbind(1:nc), col = ColSideColors[colInd], axes = FALSE)

#3)
par(mar = c(margins[1], 0, 0, margins[2]))

#4)
par(mar = c(margins[1], 0, 0, 0))

#5)
par(mar = c(0, 0, if (!is.null(main)) 5 else 0, margins[2]))

#6
if (key) {
    par(mar = c(5, 4, 2, 1), cex = 0.75)
Другие вопросы по тегам