如何在MATLAB中使用渐变标记颜色创建散点图?

时间:2012-12-18 15:05:08

标签: matlab colors point scatter

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

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

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

非常感谢帮助Matlab新手!

2 个答案:

答案 0 :(得分:10)

您可以使用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');

答案 1 :(得分:2)

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

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

然后,颜色条轴将显示特定颜色对应的时间点。重要的是,即使在测量之间的时间不均匀的情况下,这也将适当地提前颜色。

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

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