R 中 geom_spline 的 Alpha 梯度

问题描述 投票:0回答:1

我有一个庞大而复杂的数据框。 我希望拟合一条平滑的线。 (黄土是不可能的,因为数据很大,而且gam看起来不太好)。我发现 ggforumla 包中的 geom_spline 或 stat_spline 工作得很好。

我希望根据给定 bin 的观察数量调整样条线的透明度(我使用

cut
)。

我尝试过使用点几何体

stat_spline()
,但这不会影响透明度。 理想情况下,最终图将根据给定 x 轴 bin 上给定组的观察数量显示一条具有不同透明度的线。

library(palmerpenguins)
library(tidyverse)
library(ggformula)

penguins_with_obs <- penguins %>% 
  drop_na() %>% 
  group_by(species) %>%
  mutate(bill_depth_mm_cut = cut(bill_depth_mm, 10)) %>% 
  group_by(species, bill_depth_mm_cut) %>%
  mutate(obs = n()) %>% 
  arrange(bill_depth_mm_cut) %>% 
  ungroup()

ggplot(penguins_with_obs, aes(x = bill_depth_mm, 
               y = bill_length_mm,
               colour = species)) +
  facet_grid(species ~ sex) +
  geom_point(size = 1)+
  #geom_spline(aes(alpha = obs), df = 10)+
  stat_spline(aes(alpha = obs), df = 10, geom = "point", size = 2)

创建于 2023-11-11,使用 reprex v2.0.2

r ggplot2 spline
1个回答
0
投票

您是否可以尝试将

alpha = obs
添加到
aes
部分,请...

ggplot(penguins_with_obs,
   aes(x = bill_depth_mm,
       y = bill_length_mm,
       colour = species,
       alpha = obs)) +
     facet_grid(species ~ sex) +
     geom_point(size = 1) +
     geom_spline(aes(alpha = obs), df = 10) +
     stat_spline(aes(alpha = obs),
                 df = 10,
                 geom = "point",
                 size = 2)
© www.soinside.com 2019 - 2024. All rights reserved.