5

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

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

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

非常感谢您帮助 Matlab 新手!

4

2 回答 2

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');
于 2012-12-18T15:07:39.187 回答
2

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

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

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

/aside:默认颜色图是jet,这对于可视化平滑过渡非常不利,我建议您从 File Exchange下载感知改进的颜色图。要使用它来设置颜色图,您可以调用

cmap = pmkmp(length(time));
colormap(cmap);
于 2012-12-18T16:53:42.133 回答