我刚刚开始学习Matlab,我想知道是否有一种简单的方法来改变散点图的颜色,例如,从黄色到红色。我正在考虑使用命令
scatter(x,y,100,c)
其中c将被定义为RGB三元组
t=linspace(0,1,100);
c='y' .* (1-t) + 'r' .* t;
现在这样做了,但它并没有真正改变从黄色到红色的颜色。如果有一种更简单的方法,甚至一些自动执行此功能的自定义功能,那就太棒了。谢谢。
答案 0 :(得分:1)
颜色比那更难!从颜色到另一种颜色有无限可能的路径,因为颜色空间是3D体积。在所有可能的颜色空间中,用于处理新颜色或颜色创建的最差颜色空间是RGB!
这背后的原因是因为无法知道[123, 213, 42]
的颜色是什么,通常它不会是[123, 213, 0]
和[123, 213, 255]
之间的颜色。
您的案例的最佳选择是HSV色彩空间。第一个值Hue包含所有颜色信息,而另外两个是颜色的饱和度和值或强度。只需阅读你所知道的第一个你正在谈论的颜色值。
HSV中的,红色为H=0
,黄色为H=60
度,或者uint8为H=60*255/360
,双倍为H=60/255
。选择对您有益的S和V值,例如S = 255,V = 255以具有强烈的颜色。然后:
H=linspace(0,60/255,100);
HSV=[H;ones(size(H));ones(size(H))];
rgb=hsv2rgb(HSV);
这将为您提供颜色的颜色图。然后,您需要在scatter