Используйте абсолютные значения, а не относительные значения в scale_fill_gradientn - PullRequest
3 голосов
/ 19 февраля 2020

Мне бы хотелось, чтобы плавный градиент начинался с красного при 0, до белого, при 0,5, до зеленого, при 1. 1. 1001 *

Мои данные не покрывают этот полный диапазон, и кажется, что scale_fill_gradientn занимает values. Аргумент должен быть относительно данных, а не их фактических значений.

График, приведенный ниже, показывает белый цвет выше 0,5, а не на 0,5. Как я могу исправить это и установить пределы градиента для указанных значений c, которые я пишу, а не относительно данных?

library(tidyverse)
set.seed(1)
expand_grid(x=1:10, y=1:10) %>%
  mutate(val = rnorm(100, mean = 0.55, sd = 0.05)) %>%
  ggplot(aes(x, y)) +
  geom_tile(aes(fill = val)) +
  geom_text(aes(label = round(val, 3))) + 
  scale_fill_gradientn(colours = c("red","white","green"),
                       values = scales::rescale(c(0.0, 0.5, 1.0)))

heatmap_example

1 Ответ

3 голосов
/ 19 февраля 2020

Вам просто нужно установить limits параметр scale_fill_gradientn:

library(tidyverse)
set.seed(1)
expand_grid(x=1:10, y=1:10) %>%
  mutate(val = rnorm(100, mean = 0.55, sd = 0.05)) %>%
  ggplot(aes(x, y)) +
  geom_tile(aes(fill = val)) +
  geom_text(aes(label = round(val, 3))) + 
  scale_fill_gradientn(colours = c("red","white","green"),
                      limits = c(0.0, 1.0))

Создан в 2020-02-18 с помощью представьте пакет (v0.3.0)

...