Вот пример, использующий данные mtcars
(масштабированные для получения сопоставимых значений, поэтому цифры не имеют большого значения).
Ключевыми вещами являются использование gather
для упорядочивания данных, geom_tile
заполнение по значению и geom_text
для меток. Все остальное - просто манипулирование этим конкретным фреймом данных.
Вы также можете просто использовать один из scale_fill_gradient
geoms.
library(tidyverse)
library(viridis)
mtcars %>%
scale() %>%
as.data.frame() %>%
rownames_to_column(var = "make") %>%
gather(var, val, -make) %>%
ggplot(aes(var, make)) +
geom_tile(aes(fill = val)) +
geom_text(aes(label = round(val, 2)),
size = 3) +
coord_fixed() +
scale_fill_viridis() +
guides(fill = FALSE)

Или используя:
+ scale_fill_gradient2(midpoint = 1.5)
