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

如何在R中用matlines和matplot实现线性基与数据及预测模型同图绘制?

解决R中线性基、数据点与预测模型同图绘制问题

问题根源

你的代码存在两个核心问题:

  1. 连续调用matplot和plot会生成两张独立画布,导致最终输出两张图。
  2. 最后一行matlines的参数逻辑错误:你将基函数矩阵作为x轴输入,而预测值作为y轴,这会把基函数的每一列当作独立x轴,与预测值强行配对,直接导致轴显示异常、图形失真。

正确实现代码

# 加载依赖包与数据
require(faraway)
require(splines)
data(exa, package="faraway")

# 生成分段线性B样条基矩阵
bs_matrix <- bs(exa$x, df=10, degree=1)
# 拟合线性模型并生成预测值
lmod <- lm(y ~ bs_matrix, data=exa)
pred_values <- predict(lmod)

# 统一设置y轴范围,确保包含数据点、预测值和基函数值
y_total_range <- range(exa$y, pred_values, bs_matrix)

# 绘制基础图:数据点
plot(y ~ x, exa, col=gray(0.75), ylim=y_total_range, 
     ylab="y / Basis Function Values", main="Data, Prediction & Basis Functions")

# 添加预测曲线(虚线)
lines(exa$x, pred_values, lty=2, lwd=2, col="red")

# 添加所有线性基函数曲线(蓝色实线)
matlines(exa$x, bs_matrix, type="l", col="blue", lty=1)

代码说明

  • 先统一计算y轴范围:确保数据点、预测值和基函数的取值都能在画布中显示。
  • 以原始x轴为统一横轴,依次绘制数据点、预测曲线、基函数曲线,所有元素共享同一坐标系。
  • matlines的正确用法:第一个参数是统一的x轴向量(原始x),第二个参数是多列的y值矩阵(基函数矩阵),这样每一列对应一条基函数曲线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:46:01