我有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,:));
这将添加最小方块线 - 所有这些线都具有相同的颜色。
如何为每个最小二乘线赋予散点图中各个数据集使用的颜色
答案 0 :(得分:1)
lsline
将返回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;