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

如何在Octave绘制的最小二乘法回归线图中添加样本点到回归线的指示线

问题描述

这是我使用最小二乘法(least squares method)在Octave中绘制的回归线图:
当前绘制效果图

我想要在图中添加小箭头或线段,将每个散点与回归线上的对应位置连接起来,期望实现的效果参考下图,请问有什么实现方法?
目标效果参考图


实现方法

你只需要先根据拟合得到的回归模型,计算出每个散点x坐标对应的回归预测值,再将原始散点与对应的预测点直接连线即可,以下是两种常用实现方案:

方案1:绘制残差垂直线段

用循环配合line函数绘制每个散点到回归线的垂直虚线,代码示例如下:

% 1. 替换为你自己的原始数据
x = [你的x坐标数组];
y = [你的y坐标数组];
% 最小二乘拟合一次线性模型得到回归线
p = polyfit(x, y, 1);
y_pred = polyval(p, x);

% 2. 绘制基础图层
scatter(x, y, 40, 'filled', '#1f77b4'); % 绘制原始散点
hold on;
plot(x, y_pred, '#ff4b33', 'LineWidth', 2); % 绘制回归线

% 3. 绘制每个散点到回归线的连接线段
for i = 1:length(x)
    line([x(i), x(i)], [y(i), y_pred(i)], ...
        'Color', '#707070', ...
        'LineStyle', '--', ...
        'LineWidth', 1);
end
hold off;

% 可选:添加图表标注
xlabel('自变量X');
ylabel('因变量Y');
legend('原始散点', '回归线', '残差线段');

方案2:绘制带箭头的连接线

如果需要箭头效果,直接用quiver函数实现更简便,不需要写循环:

% 前面的数据准备、散点+回归线绘制逻辑和方案1完全一致
scatter(x, y, 40, 'filled', '#1f77b4');
hold on;
plot(x, y_pred, '#ff4b33', 'LineWidth', 2);

% 绘制箭头:第5个参数设为0是关闭自动缩放,保证箭头端点刚好落在回归线上
quiver(x, y, zeros(size(x)), y_pred - y, 0, ...
    'Color', '#707070', ...
    'MaxHeadSize', 0.4, ... % 调整箭头头部尺寸
    'LineWidth', 1);
hold off;

你可以按需调整颜色、线型、箭头大小参数,匹配你想要的图表风格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 02:15:04