2016-07-25 201 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是的。有可能有一些大小或你錯過的東西 –

相關問題