我正在尝试在一组数据上绘制一个图(使用散点图或绘图)。
我有一个包含值的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。
感谢您的帮助。
答案 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);