如何在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
相关产品推荐
相关产品推荐

