如何通过 MATLAB 为最小二乘线赋予与散点图中相应数据集相同的颜色?

How to give least-squares lines the same colour as the respective data set in the scatter plot via MATLAB?

我用 3 个不同的数据集绘制了散点图。我用不同颜色编码的不同数据集。

我的代码是这样的:

clear all;
close all;

% my colormap
colormap = [0, 0, 0
            0.5, 0.5, 0.5
            0,   0.5, 0.5];

% x values of 3 different datasets
xvalues = [10 20 30; 35 65 95; 22 42 82];

% y values of 3 different datasets
yvalues = [1 2 3; 6 12 24; 2 4 8];

figure;
axis([0 90  0 30]);

% loop for each dataset
for i = 1:3

    x = xvalues(i,:);    
    y = yvalues(i,:);
    scatter(x,y, 60, colormap(i,:));   hold on;    

end

现在,我想以各自数据集的颜色为每个数据集添加最小二乘线。

我在代码末尾添加了:

% add least-squares lines to scatter plot
h = lsline;
set(h,'linewidth',2,'color',colormap(i,:));

这将添加最小二乘线 - 所有这些线都具有相同的颜色。

如何为每条最小二乘线指定用于散点图中各个数据集的颜色

如果您的轴上有多个绘图对象,

lsline 将 return a vector of line objects。您需要单独设置颜色。

hlines = lsline;
for k = 1:numel(hlines)
    set(hlines(k), 'Color', colormap(k, :))
end

您这样做的方式是将 所有 最佳拟合线设置为 colormap(3,:) 指定的颜色。

如果您使用标准绘图对象而不是 scatter(因为您使用的是恒定的颜色和大小,所以散布在这里没有任何好处),那么 lsline 应该与您的对象的颜色相匹配自动地。它 不会 scatter 图执行此操作,因为每个数据点的颜色通常会有所不同。

figure;
axis([0 90  0 30]);

% loop for each dataset
for k = 1:3
    x = xvalues(k,:);    
    y = yvalues(k,:);
    plot(x, y, 'o', 'Color', colormap(k,:));
    hold on;    
end

lsline;