如何使用R语言将训练集、测试集及预测结果绘制在同一张图中
要实现训练集、测试集、预测折线同图展示,可按如下方式调整代码,解决原代码可能出现的x轴坐标不匹配、序列重叠问题:
# 生成预测结果 prev <- predict(m, newdata = as.data.frame(test)) # 计算训练集长度,用于对齐三个序列的x轴坐标 train_length <- length(train) test_length <- length(test) # 先绘制训练集,显式设置坐标轴范围覆盖所有数据 plot( x = 1:train_length, y = train, type = "l", col = "red", ylab = "Vol", xlim = c(1, train_length + test_length), ylim = range(c(train, test, prev)) ) # 绘制测试集真实值,x轴从训练集结束位置开始 lines( x = (train_length + 1):(train_length + test_length), y = test, col = "yellow" ) # 绘制预测折线 lines( x = (train_length + 1):(train_length + test_length), y = prev, col = "blue" ) # 可选添加图例区分三类折线 legend( "topright", legend = c("训练集", "测试集真实值", "预测值"), col = c("red", "yellow", "blue"), lty = 1 )
关键调整说明:
- 显式指定每个序列的x轴坐标:原代码直接调用
plot(train)会默认x轴范围为1到训练集长度,后续绘制测试集、预测值时也会默认从x=1开始,导致三个序列重叠在同一区间,无法体现时序先后关系。 - 提前设置
xlim和ylim:保证绘图区域能完整容纳所有数据,避免部分序列被截断。 - 新增的图例可快速区分不同折线含义,提升图表可读性。
内容的提问来源于stack exchange,提问作者CHAIMAE HAFID
相关产品推荐
相关产品推荐

