2012-12-18 76 views
5

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

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

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

非常感谢帮助Matlab新手!

回答

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

辉煌!非常感谢您的帮助,这比其他一些代码更简单,可以做类似的事情,我正在尝试了解,并且正是我所需要的。 – user1913275

2

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

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

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

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

cmap = pmkmp(length(time)); 
colormap(cmap); 
相关问题