Обратный цвет пивовара цветов карты тепла ggplot - PullRequest
0 голосов
/ 08 ноября 2019
library(tidyverse)
library(RColorBrewer)
x <- LETTERS[1:20]
y <- paste0("var", seq(1, 20))
data <- expand.grid(X = x, Y = y)
data$Z <- runif(400, 0, 5)

Если я создам кадр данных выше, а затем строю тепловую карту с кодом ниже, я получаю то и это:

ggplot(data, aes(X, Y, fill = Z)) + 
  geom_tile() +
  scale_fill_distiller(palette = "Reds") +                    # line 3
  # scale_fill_distiller(palette = "Reds", direction = -1) +  # line 4
  labs(x = NULL, y = NULL) +
  theme_minimal()

Я думал, что работает line #4 вместо line #3 (выше) должен был изменить цвета моей легенды, в соответствии с аргументом ?scale_fill_distiller():

direction: устанавливает порядок цветов в шкале. Если 1, по умолчанию, цвета выводятся RColorBrewer :: brewer.pal (). Если -1, порядок цветов меняется на противоположный.

По сути, белые области карты тепла станут темно-красными, а темно-красные области карты тепла станут белыми. Почему этого не происходит? Запустите line #3 выше или line #4, и результат будет таким же.

heatmap

1 Ответ

2 голосов
/ 08 ноября 2019

В дополнение к моему комментарию выше, давайте поместим оба графика рядом

gg1 <- ggplot(data, aes(X, Y, fill = Z)) +
    geom_tile() +
    scale_fill_distiller(palette = "Reds", direction = +1) +
    labs(x = NULL, y = NULL) +
    theme_minimal()

gg2 <- ggplot(data, aes(X, Y, fill = Z)) +
    geom_tile() +
    scale_fill_distiller(palette = "Reds", direction = -1) +
    labs(x = NULL, y = NULL) +
    theme_minimal()

library(gridExtra)
g <- grid.arrange(gg1, gg2)

enter image description here

Причину поведения, которое вы видите вышеscale_fill_distiller предполагает direction = -1 по умолчанию:

scale_fill_distiller
#function (..., type = "seq", palette = 1, direction = -1, values = NULL,
#    space = "Lab", na.value = "grey50", guide = "colourbar",
#    aesthetics = "fill")
#{
#    type <- match.arg(type, c("seq", "div", "qual"))
#    if (type == "qual") {
#        warning("Using a discrete colour palette in a continuous scale.\n  Consider using type = \"seq\" or type = \"div\" instead",
#            call. = FALSE)
#    }
#    continuous_scale(aesthetics, "distiller", gradient_n_pal(brewer_pal(type,
#        palette, direction)(7), values, space), na.value = na.value,
#        guide = guide, ...)
#}
#<bytecode: 0x7fed742ed1d8>
#<environment: namespace:ggplot2>
...