如何更改 ggplot2 geom_raster 中的插值/平滑
Posted
技术标签:
【中文标题】如何更改 ggplot2 geom_raster 中的插值/平滑【英文标题】:How to change interpolation / smoothing in ggplot2 geom_raster 【发布时间】:2018-11-25 14:55:32 【问题描述】:是否可以更改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
-- see this post -- 但我想通过填充计算值而不是计算密度。
【问题讨论】:
说,你从哪里得到这个scale_fill_viridis_c
?如果viridis
我找到scale_fill_viridis
但没有scale_fill_viridis_c
?
@Hack-R 来自 ggplot2
(版本 2.2.1.9000)。
你有解决这个问题的办法吗?
@Tjebo 不,不是今天
【参考方案1】:
AFAIK,除了打开或关闭它之外,您无法操纵网格函数的插值。相反,ggfx 包允许您使用您选择的“sigma”参数来模糊特定图层。示例如下:
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.
由reprex package (v2.0.0) 于 2021 年 8 月 29 日创建
【讨论】:
以上是关于如何更改 ggplot2 geom_raster 中的插值/平滑的主要内容,如果未能解决你的问题,请参考以下文章