【问题标题】:How do I create a scatter plot with graduated marker colours in MATLAB?如何在 MATLAB 中创建带有渐变标记颜色的散点图?
【发布时间】:2012-12-05 19:47:05
【问题描述】:

我想在 MATLAB 中绘制一个简单的散点图,标记颜色从光谱的一端到另一端各不相同(例如红色、橙色、黄色......蓝色、紫色)。

我的数据将河流中的水量与水质随时间进行比较(3 个简单的列:时间、数量、质量)。我想绘制数量与质量的 x,y 散点图,但颜色会随着时间的推移而变化,这样就可以看到质量随时间的变化。

我需要生成许多这种类型的图表,所以如果我能找到一段适用于任何长度数据集的代码,那将非常有用。

非常感谢您帮助 Matlab 新手!

【问题讨论】:

    标签: matlab colors point scatter


    【解决方案1】:

    你可以使用scatter的颜色参数

    如果您的数据已经按时间排序而不是简单地使用:

    % let n be the number of points you have
    cmp = jet(n); % create the color maps changed as in jet color map
    scatter(x, y, 10, cmp, 'filled');
    

    否则你需要先对数据进行排序:

    [time, idx] = sort(time);
    x = x(idx);
    y = y(idx);
    cmp = jet(n); % create the color maps changed as in jet color map
    scatter(x, y, 10, cmp, 'filled');
    

    【讨论】:

    • 太棒了!非常感谢您的帮助,这比其他一些代码更简单地完成我试图理解的类似事情,这正是我所需要的。
    【解决方案2】:

    通过附加变量为散点图着色的最简单方法是简单地将其作为“颜色”参数传递。假设您有xytime(其中时间是一个数字向量。如果时间包含日期字符串,请先调用datenum)。然后就可以写了

    scatter(x,y,[],time,'filled')
    

    然后,颜色条轴将显示特定颜色对应的时间点。重要的是,即使测量之间的时间不均匀,这也会正确推进颜色。

    /aside:默认颜色图是jet,这对于可视化平滑过渡非常不利,我建议您从文件交换处下载perceptually improved colormap。要使用它来设置颜色图,您可以调用

    cmap = pmkmp(length(time));
    colormap(cmap);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 2019-10-21
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2014-10-03
      相关资源
      最近更新 更多