Тепловая карта - настройка цветового диапазона

library(gplots)
shades= c(seq(-1,0.8,length=64),seq(0.8,1.2,length=64),seq(1.2,3,length=64))
 heatmap.2(cor_mat, dendrogram='none', Rowv=FALSE, Colv=FALSE, col=redblue(64),  
breaks=shades, key=TRUE, cexCol=0.7, cexRow=1, keysize=1)

Есть проблема с перерывами. Желаю получить помощь по этому поводу.

После запуска кода я получаю это сообщение об ошибке

Error in image.default(1:nc, 1:nr, x, xlim = 0.5 + c(0, nc), ylim = 0.5 + : must have one more break than colour

Спасибо за ваше время и внимание.


person rockswap    schedule 25.05.2012    source источник
comment
Какой у Вас вопрос? Какие проблемы с перерывом? В чем вы хотите помочь?   -  person Andrie    schedule 25.05.2012
comment
После запуска этого кода я получаю это сообщение об ошибке: Ошибка в image.default (1: nc, 1: nr, x, xlim = 0,5 + c (0, nc), ylim = 0,5 +: должен иметь еще один разрыв, чем цвет Это в чем проблема   -  person rockswap    schedule 25.05.2012
comment
Пожалуйста, добавьте эту информацию к вашему вопросу.   -  person Andrie    schedule 25.05.2012


Ответы (1)


Ну, у нас нет cor_mat, поэтому мы не можем попробовать это сами, но проблема, похоже, в том, что написано на банке, не так ли? То, как тепловая карта (и вообще все функции, основанные на изображении) работает с разрывами и вектором цветов, заключается в том, что разрывы определяют точки, в которых изменения значения вашей матрицы данных означают изменение цвета. Короче говоря, если break = c(1,2,3), а ваш col = c("red", "blue"):

  1. значения ‹ 1 будут прозрачными
  2. значения >= 1, ‹= 2 будут отображаться красным цветом
  3. значения > 2, ‹= 3 будут отображаться синим цветом
  4. значения > 3 будут прозрачными

Что происходит в вашем коде, так это то, что с помощью «оттенка» вы предоставили вектор длины 3 * 64 для break, в то время как redblue(64) дает вам только 64 цвета. Попробуйте заменить redblue(64), скажем, на redblue(3*64-1).

person Fhnuzoag    schedule 25.05.2012