如何通过 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;
我用 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;