Проблемы с использованием pheatmap

Я пытаюсь поиграться с pheatmap и застреваю в самом начале.

Создание примера игрушки:

library(pheatmap)
set.seed(1)
my.mat <- matrix(rnorm(90), nrow = 30, ncol = 30)
rownames(my.mat) <- 1:30
colnames(my.mat) <- 1:30
col.scale = colorRampPalette(c("red", "blue"), space = "rgb")(10)
breaks.size = 11
pheatmap(my.mat, color = col.scale, breaks = breaks.size, border_color = NA, cellwidth = 10, cellheight = 10)

Выдает это сообщение об ошибке:

Error in unit(y, default.units) : 'x' and 'units' must have length > 0

И сюжет, который он производит, не кажется правильным:

Например, я не могу понять, почему верхние правые ячейки белые. Я также думал, что настройка cellwidth = 10 и cellheight = 10 означает получение квадратных ячеек, а не прямоугольных. И, наконец, если кто-нибудь знает, возможно ли, чтобы имена строк и столбцов появлялись на той же стороне тепловой карты, что и дендограммы (то есть на концах дендограммы), это будет здорово. введите описание изображения здесь


person user1701545    schedule 18.07.2014    source источник


Ответы (1)


Что ж, причина, по которой вы получаете эту ошибку, заключается в том, что вы неправильно используете параметр breaks=. Со страницы справки ?pheatmap

разрывы: последовательность чисел, которая охватывает диапазон значений в мате и на один элемент длиннее цветового вектора. Используется для сопоставления значений с цветами. Полезно, если необходимо сопоставить определенные значения определенным цветам и определенным значениям. Если значение NA, то перерывы рассчитываются автоматически.

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

Также я не уверен, что вы говорите о том, что ячейки не квадратные. Вы рисуете квадрат 30x30 (по крайней мере, для меня). Поскольку вы группируете, вы получаете только один цвет на кластер.

Я предполагаю, что часть проблемы может заключаться в том, что вы генерируете только 90 случайных переменных для матрицы из 900 ячеек, поэтому эти значения повторяются (ваши данные очень структурированы). Возможно, вы имели в виду

my.mat <- matrix(rnorm(900), nrow = 30, ncol = 30)

это дает вам следующий сюжет

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

person MrFlick    schedule 18.07.2014