Чтобы понять, как это работает, мне пришлось заглянуть в код pheatmap
. Давайте сначала создадим матрицу:
A <- matrix(1:10, 2, 5)
Палитра по умолчанию определяется как
pal <- colorRampPalette(rev(RColorBrewer::brewer.pal(n = 7, name = "RdYlBu")))(100)
Затем идея состоит в том, чтобы определить значения разрыва и назначить цвет каждому из интервалов, определяемых разрывами:
bks <- pheatmap:::generate_breaks(A, length(pal), center = F)
A2 <- pheatmap:::scale_colours(A, col=pal, breaks=bks)
Матрица A2
содержит цвета, связанные с каждой ячейкой A
:
A2
# [,1] [,2] [,3] [,4] [,5]
# [1,] "#4575B4" "#ABD0E4" "#F4FBD2" "#FEDF8F" "#EF6D48"
# [2,] "#77A6CE" "#E0F3F7" "#FEF4AF" "#FCA86B" "#D73027"
Наконец, мы можем представить A
цветами, определенными в A2
, сначала с помощью pheatmap
, а также с image
:
pheatmap(t(A[,5:1]),cluster_rows = F, cluster_cols = F)
image(A, col=A2)
Ссылка: Кольде, Р. (2013). Тепловая карта: красивые тепловые карты.
person
Vincent Guillemot
schedule
07.01.2015