R ggplot тепловая карта, ручная сортировка и выбор среднего цвета - PullRequest
1 голос
/ 09 октября 2019

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

Образец набора данных:

set.seed(5)
demo <- data.frame(x = seq(from = -40, to = 40, by = 5), y = 0:5, data = runif(102, min = 0, max = 1))

Мои попытки генерировать карту тепла основаны на:

library(ggplot2)
library(ggsci)
ggplot(demo) + geom_tile(aes(x = x, y = y, fill = data), color = NA) + scale_fill_gsea()

Однако я бы хотел сместить центр "белый"части с другим значением, например 0,9, и я хотел бы установить свои собственные дискретные корзины.

Из прочтения дальнейших статей и публикаций stackoverflow я понимаю, что мне придется использовать cut для генерации собственных сечений перед использованием scale_fill_manual, чтобы установить собственные цветовые шкалы.

Есть ли более простой метод, который я упускаю?

Спасибо.

1 Ответ

1 голос
/ 10 октября 2019

С помощью scale_fill_gradient2 вы можете определить пользовательское значение для средней точки:

ggplot(demo) + 
  geom_tile(aes(x = x, y = y, fill = data), color = NA) + 
  scale_fill_gradient2(low = "blue", mid = "white", high = "red", 
                       midpoint = 0.9, 
                       breaks = seq(0, 1, 0.1), 
                       limits = c(0, 1))

enter image description here

...