我想在MATLAB中绘制一个简单的散点图,标记颜色从光谱的一端到另一端变化(例如红色,橙色,黄色......蓝色,紫色)。
我的数据将河水中的水量与水的质量进行比较(3个简单的列:时间,数量,质量)。我想绘制数量与质量的x,y散点图,但随着时间的推移颜色会逐渐变化,以便随着时间的推移可以看到质量的进展。
我需要生成许多这种类型的图形,所以如果我能找到一段适用于任何长度数据集的代码,那将非常有用。
非常感谢帮助Matlab新手!
答案 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)
通过附加变量为散点图着色的最简单方法是简单地将其作为“颜色” - 参数传递。假设您有x
,y
和time
(其中时间是数字向量。如果时间包含日期字符串,请先在其上调用datenum
)。然后你可以写
scatter(x,y,[],time,'filled')
然后,颜色条轴将显示特定颜色对应的时间点。重要的是,即使在测量之间的时间不均匀的情况下,这也将适当地提前颜色。
/ aside:默认色图是jet
,这对于可视化平滑过渡非常不利,我建议您从文件交换中下载perceptually improved colormap。要使用它来设置色彩映射,您可以调用
cmap = pmkmp(length(time));
colormap(cmap);