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

如何在R中绘制带散点的衰减曲线?使用ggplot2未达预期

解决ggplot2同时绘制散点与衰减曲线的问题

首先看你提供的数据读取代码,这里有个明显的问题——你的数据格式不对,read.table里的文本内容把列名和所有数值都堆在一起了,导致R无法正确识别两列数据(d和weighted_LD)。这会导致后续绘图时数据结构错误,大概率是你只得到线条连接散点的核心原因之一。

第一步:修正数据读取

先把数据整理成每行一对(d值 + weighted_LD值)的格式,这样read.table才能正确解析:

# 修正后的数据读取代码
df <- read.table(text = "
d weighted_LD
1.400 0.00002198
1.450 0.00001849
1.500 0.00001652
1.550 0.00001673
1.600 0.00001067
1.650 0.00001647
1.700 0.00001861
1.750 0.00001903
1.800 0.00001949
", header = TRUE)

第二步:绘制散点 + 衰减曲线

衰减曲线通常是指数衰减模型(比如 y = a * exp(-b*x) + c),ggplot2的geom_smooth默认用线性模型,直接用默认参数得不到衰减曲线,这是第二个关键问题。下面给你两种可行的方法:

方法1:用geom_smooth指定指数衰减模型

通过method = "nls"指定非线性最小二乘拟合,同时给出衰减模型的公式和初始参数:

library(ggplot2)

ggplot(df, aes(x = d, y = weighted_LD)) +
  geom_point(color = "#2c3e50", size = 3) +  # 绘制散点
  geom_smooth(
    method = "nls",
    formula = y ~ a * exp(-b * x) + c,
    method.args = list(start = list(a = 0.00002, b = 1, c = 0)),  # 初始参数要根据你的数据调整
    se = FALSE,  # 关闭置信区间(如果需要可以设为TRUE)
    color = "#e74c3c",
    linewidth = 1.2
  ) +
  labs(x = "Distance (d)", y = "Weighted LD") +
  theme_minimal()

方法2:手动拟合模型后绘制曲线

如果geom_smooth的nls拟合报错(比如初始参数不合适),可以先手动用nls拟合模型,生成预测数据,再用geom_line绘制曲线:

# 1. 拟合指数衰减模型
decay_model <- nls(weighted_LD ~ a * exp(-b * d) + c, data = df, start = list(a = 0.00002, b = 1, c = 0))

# 2. 生成预测用的x值(更平滑的序列)
pred_d <- seq(min(df$d), max(df$d), length.out = 100)
pred_df <- data.frame(d = pred_d, weighted_LD = predict(decay_model, newdata = list(d = pred_d)))

# 3. 绘图
ggplot() +
  geom_point(data = df, aes(x = d, y = weighted_LD), color = "#2c3e50", size = 3) +
  geom_line(data = pred_df, aes(x = d, y = weighted_LD), color = "#e74c3c", linewidth = 1.2) +
  labs(x = "Distance (d)", y = "Weighted LD") +
  theme_minimal()

关键注意点

  • 初始参数(start里的a、b、c)要根据你的数据大致调整,如果初始值太离谱,nls会拟合失败,你可以先看散点的趋势:比如a接近最大的y值,b是衰减速率,c是基线值。
  • 如果你的衰减模型不是指数型(比如幂函数衰减y = a * x^(-b)),只需要把公式换成对应的形式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:40:46