Как изменить интерполяцию / сглаживание в ggplot2 geom_raster
Можно ли изменить уровень интерполяции (например, сглаживание, размытие) в geom_raster
?
library(tidyverse)
mtcars %>%
group_by(carb, hp = cut(mtcars$hp, 3, labels = c("low", "med", "hi"))) %>%
summarise(mean_mpg = mean(mpg)) %>%
ggplot(aes(carb, hp)) +
geom_raster(aes(fill = mean_mpg), interpolate = FALSE) +
scale_fill_viridis_c(option = "inferno")
Я хотел бы контролировать степень размытия на следующем графике:
mtcars %>%
group_by(carb, hp = cut(mtcars$hp, 3, labels = c("low", "med", "hi"))) %>%
summarise(mean_mpg = mean(mpg)) %>%
ggplot(aes(carb, hp)) +
geom_raster(aes(fill = mean_mpg), interpolate = TRUE) +
scale_fill_viridis_c(option = "inferno")
Я знаю как это сделать с stat_density_2d
- смотрите этот пост - но я бы хотел пропустить заполнить вычисленное значение, а не вычислять плотность.
1 ответ
AFAIK, вы не можете манипулировать интерполяцией функции сетки, кроме как просто включить или выключить ее. Вместо этого пакет ggfx позволяет размыть определенный слой с помощью параметра «сигма» по вашему выбору. Пример ниже:
library(tidyverse)
library(ggfx)
mtcars %>%
group_by(carb, hp = cut(mtcars$hp, 3, labels = c("low", "med", "hi"))) %>%
summarise(mean_mpg = mean(mpg)) %>%
ggplot(aes(carb, hp)) +
with_blur(
geom_raster(aes(fill = mean_mpg), interpolate = FALSE),
sigma = 10
) +
scale_fill_viridis_c(option = "inferno")
#> `summarise()` has grouped output by 'carb'. You can override using the `.groups` argument.
#> Warning: Raster pixels are placed at uneven horizontal intervals and will be
#> shifted. Consider using geom_tile() instead.
Создано 29.08.2021 пакетом REPEX (v2.0.0)