geom_area 图的平滑数据

Smooth data for a geom_area graph

我有这样的数据:

df <- tibble(
    x = 1:20,
    y = c(4, 4, 2, 1, 8, 3, 4, 2, 8, 2, 2, 2, 2, 6, 1, 7, 8, 9, 9, 2)
)

绘制成这样:

df %>% 
    ggplot(aes(x, y)) + 
    geom_area()

但是这张图真的很刺耳。我怎样才能将锯齿状的边缘平滑成这样:

谢谢!

扩展Axeman的评论:平滑可以通过span参数控制。

示例 1:

df %>% 
    ggplot(aes(x, y)) + 
    # original, delete if desired
    geom_area(alpha = 1/2) + 
    stat_smooth(
        geom = 'area', method = 'loess', span = 1/3,
        alpha = 1/2, fill = "red") + 
    labs(title = "Smooth with `span = 1/3`")

示例 2:

df %>% 
    ggplot(aes(x, y)) + 
    geom_area(alpha = 1/2) + 
    # original, delete if desired
    stat_smooth(
        geom = 'area', method = 'loess', span = 7/10,
        alpha = 1/2, fill = "blue") + 
    labs(title = "Smooth with `span = 7/10`")