首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过MATLAB给出与散点图中的数据集相同颜色的最小二乘线?

如何通过MATLAB给出与散点图中的数据集相同颜色的最小二乘线?
EN

Stack Overflow用户
提问于 2016-03-28 15:29:21
回答 1查看 1.7K关注 0票数 3

我有三个不同的数据集,我用它绘制了一个散点图。我用不同的颜色编码了不同的数据集。

我的代码是这样的:

代码语言:javascript
复制
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

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

我在代码末尾添加了以下内容:

代码语言:javascript
复制
% add least-squares lines to scatter plot
h = lsline;
set(h,'linewidth',2,'color',colormap(i,:));

这将增加最小二乘线-它们都有相同的颜色。

如何为散点图中的各个数据集提供每条最小二乘线的颜色?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-28 15:33:05

如果轴上有多个绘图对象,lsline将返回直线对象的向量。您需要单独设置颜色。

代码语言:javascript
复制
hlines = lsline;
for k = 1:numel(hlines)
    set(hlines(k), 'Color', colormap(k, :))
end

按照您所做的方式,您将所有最适合的线条设置为colormap(3,:)指定的颜色。

如果您使用的是标准的绘图对象而不是scatter (因为您使用的是恒定的颜色和大小,所以在这里分散没有好处),那么lsline应该会自动匹配对象的颜色。由于每个数据点的颜色通常都不同,所以对于scatter绘图,它不会这样做。

代码语言:javascript
复制
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;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36265473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档