我有三个不同的数据集,我用它绘制了一个散点图。我用不同的颜色编码了不同的数据集。
我的代码是这样的:
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,:));这将增加最小二乘线-它们都有相同的颜色。
如何为散点图中的各个数据集提供每条最小二乘线的颜色?

发布于 2016-03-28 15:33:05
如果轴上有多个绘图对象,lsline将返回直线对象的向量。您需要单独设置颜色。
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;https://stackoverflow.com/questions/36265473
复制相似问题