You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggplot中按观测日期分组取分位数后直接拟合回归曲线

解决方案

核心思路是利用geom_smooth()的data参数直接在图层内部完成分组、分位数计算与过滤操作,不需要提前生成任何中间数据集,也不会修改原数据。
你需要先加载dplyr包完成分组过滤操作,修改后的完整绘图代码如下:

library(ggplot2)
library(dplyr)

ggplot(data=df_Bandvals, aes(x=depth, y=Band12plusmin))+
  scale_x_continuous(limits = c(-15, 35))+
  scale_y_continuous(limits = c(120, 960))+
  geom_point(aes(color=factor(obsdate)), size=1.5)+
  geom_smooth(
    method = "loess",
    # 图层内部完成分组过滤,仅用每组下50%分位数的样本拟合
    data = ~ .x |> 
      group_by(obsdate) |> 
      filter(Band12plusmin <= quantile(Band12plusmin, 0.5))
  )

参数说明

  • ~ .x指代ggplot全局传入的原数据集df_Bandvals
  • 若要调整筛选的分位数阈值,直接修改quantile()中的0.5为对应数值即可,比如0.3就是取每个分组内下30%分位数的样本
  • 若需要换成线性拟合,直接把method参数改为"lm"即可

内容的提问来源于stack exchange,提问作者jaysigg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:57:05