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

如何使用ggplot2为给定数据框的分布拟合曲线?

用ggplot2拟合Hour与Fraction分布曲线的方法

嘿,这事儿不难!先确保你已经装好了ggplot2包,要是还没装,先跑这行:

install.packages("ggplot2")
library(ggplot2)

接下来基于你给的df数据框,咱们分几种常用的拟合方式来做,你可以根据数据的趋势选合适的:

1. 自动平滑拟合(懒人首选)

ggplot2自带的geom_smooth默认用局部加权回归(Loess),能自动适配数据的局部趋势,还能顺便画出置信区间,非常适合快速看趋势:

ggplot(df, aes(x = hour, y = fraction)) +
  geom_point(color = "steelblue", size = 2) + # 先把原始数据点画出来
  geom_smooth(method = "loess", se = TRUE, color = "firebrick", linewidth = 1) + # 拟合曲线,se=TRUE显示置信区间
  labs(title = "Hour vs Fraction (Loess Smoothing)",
       x = "Hour of Day",
       y = "Fraction") +
  theme_minimal()

2. 多项式拟合(适合有明显升降趋势的情况)

如果觉得Loess太“随性”,可以用多项式来拟合,比如三次多项式,指定method = "lm"再加公式就行:

ggplot(df, aes(x = hour, y = fraction)) +
  geom_point(color = "steelblue", size = 2) +
  geom_smooth(method = "lm", formula = y ~ poly(x, 3), se = TRUE, color = "darkgreen", linewidth = 1) +
  labs(title = "Hour vs Fraction (Cubic Polynomial Fit)",
       x = "Hour of Day",
       y = "Fraction") +
  theme_minimal()

3. 自定义非线性拟合(适配你的双峰趋势)

看你的数据,fraction在凌晨和深夜明显偏高,白天很低,典型的双峰分布,咱们可以用两个正态分布叠加的非线性模型来拟合,更贴合数据形态:

# 先拟合非线性模型
bimodal_model <- nls(
  fraction ~ a*dnorm(hour, mean = peak1, sd = sd1) + b*dnorm(hour, mean = peak2, sd = sd2),
  data = df,
  start = list(a = 0.1, peak1 = 3, sd1 = 2, b = 0.03, peak2 = 23, sd2 = 1) # 初始参数猜个大概就行
)

# 生成拟合曲线的预测数据,让曲线更平滑
pred_data <- data.frame(hour = seq(0, 23, by = 0.1))
pred_data$fraction <- predict(bimodal_model, newdata = pred_data)

# 绘图
ggplot(df, aes(x = hour, y = fraction)) +
  geom_point(color = "steelblue", size = 2) +
  geom_line(data = pred_data, color = "purple", linewidth = 1) +
  labs(title = "Hour vs Fraction (Bimodal Nonlinear Fit)",
       x = "Hour of Day",
       y = "Fraction") +
  theme_minimal()

小提醒:

  • 要是不想看置信区间,把geom_smooth里的se改成FALSE就行。
  • 选哪种拟合方法,主要看数据趋势:Loess适合局部波动大的,多项式适合有规律升降的,非线性模型适合有特定形态(比如双峰)的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:54:13