【问题标题】:How can I conditionally colour points on a scatter plot in matlab?如何在matlab的散点图中有条件地为点着色?
【发布时间】:2016-01-05 03:06:10
【问题描述】:

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

感谢您的帮助。

【问题讨论】:

    标签: matlab plot colors


    【解决方案1】:

    您应该使用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');
    

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

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

    【讨论】:

    • 谢谢@lifesayko!这解决了我的问题,我会牢记 MWE。
    【解决方案2】:

    当颜色被指定为字符串时,它不能为点而改变。您的代码应该会抛出错误,但幸运的是它不会。

    要按照您的方式进行操作,我认为 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-08
      • 2012-09-19
      • 1970-01-01
      相关资源
      最近更新 更多