2016-07-25 148 views
2

我刚开始学习Matlab,我想知道是否有一种简单的方法来改变散点图的颜色,例如,从黄色变为红色。我想使用命令从一种特定颜色到另一种颜色的研究生matlab绘图

scatter(x,y,100,c) 

其中c将被定义为一个RGB三元

t=linspace(0,1,100); 
c='y' .* (1-t) + 'r' .* t; 

现在这样做的东西,但它并没有真正给改变了颜色逐渐由黄色变为红色。如果有一个更简单的方法,或者甚至一些自动执行此操作的自定义函数,那就太好了。谢谢。

回答

1

颜色比这更难!由于颜色空间是3D卷,所以从一种颜色到另一种颜色有无限可能的路径。在所有可能的色彩空间中,用于处理新颜色或创建颜色的最糟糕的一种是RGB!

背后的原因是因为没有办法知道[123, 213, 42]是什么颜色,通常它不会是[123, 213, 0][123, 213, 255]之间的颜色。

您的情况的最佳选择是HSV色彩空间。第一个值Hue包含所有颜色信息,而另外两个则是颜色的饱和度和值或强度。只要阅读你所知道的第一个你认为很重要的价值即可。

in HSV,red is H=0 and yellow is H=60 degrees,or H=60*255/360 in uint8 or H=60/255 in double。选择适合您的S和V值,例如S = 255,V = 255具有强烈的色彩。然后:

H=linspace(0,60/255,100); 
HSV=[H;ones(size(H));ones(size(H))]; 
rgb=hsv2rgb(HSV); 

这会给你一个颜色的颜色映射。然后你需要在scatter

+0

正确地分配他们感谢您的答复。这看起来不错,但'rgb'没有正确的维度。虽然变量'HSV'有100个三联体,'rgb'只有三个。我预计命令'hsv2rgb'将按照术语应用并在RGB中生成100个三元组,然后我可以很容易地将它们传递给'scatter'。我错过了什么吗? – learner271

+0

@ learner271是的。有可能有一些大小或你错过的东西 –

相关问题