如何在matlab中有条件地对散点图上的点进行着色?

时间:2016-01-05 03:06:11

标签: matlab plot colors

我正在尝试在一组数据上绘制一个图(使用散点图或绘图)。 我有一个包含值的data数组。 我还有一个confidence数组,其中包含从0到1的值,表示该值的可靠性。 在我的散点图中,我必须以不同的颜色绘制置信度低于0.5的值。

到目前为止,我有:

for i=1:length(data)
    if confidence(i) < 0.5
        colour(i) = 'g';
    else
        colour(i) = 'b';
    end
end

f = figure;
scatter(xvalues,data,[],colour,'x');

问题:

我希望有绿色和蓝色x,但情节显示全蓝色。 我已经检查过,有信心值肯定低于0.5。 我不知道如何指定颜色。

我正在使用Matlab R2013a。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您应该使用hold on命令简单地绘制两次:

data = rand(10,1);
confidence = rand(10,1);
xvalues = rand(10,1);

f = figure; hold on;
scatter(xvalues(confidence<0.5),data(confidence<0.5),'g');
scatter(xvalues(confidence>=0.5),data(confidence>=0.5),'b');

请注意,您可以通过直接选择xvalues(confidence<0.5)而不使用for循环来选择性地选择所需的值(尝试在命令窗口中输入confidence<0.5以查看它的作用)。

此外,对于将来,如果您的代码是一个独立的MWE(最低工作示例),它非常有用。这意味着还会生成一些数据点,因此其他人可以直接复制/粘贴和运行您的代码:)。

答案 1 :(得分:0)

如果将颜色指定为字符串,则无法更改这些点。你的代码应该抛出一个错误,但幸运的是它没有。

按照你的方式去做,我认为lifesayko的回答是更好的。如果你想在情节上显示10种不同的颜色怎么办? 在这种情况下,您可能希望将颜色指定为RGB三元组,这意味着color将是一个三列矩阵。

color = zeros(size(data));
color(confidence < 0.5,:) = [0 1 0];
color(confidence >= 0.5,:) = [0 0 1];
scatter(xvalues,data,color);