我剛開始學習Matlab,我想知道是否有一種簡單的方法來改變散點圖的顏色,例如,從黃色變爲紅色。我想使用命令從一種特定顏色到另一種顏色的研究生matlab繪圖
scatter(x,y,100,c)
其中c將被定義爲一個RGB三元
t=linspace(0,1,100);
c='y' .* (1-t) + 'r' .* t;
現在這樣做的東西,但它並沒有真正給改變了顏色逐漸由黃色變爲紅色。如果有一個更簡單的方法,或者甚至一些自動執行此操作的自定義函數,那就太好了。謝謝。
我剛開始學習Matlab,我想知道是否有一種簡單的方法來改變散點圖的顏色,例如,從黃色變爲紅色。我想使用命令從一種特定顏色到另一種顏色的研究生matlab繪圖
scatter(x,y,100,c)
其中c將被定義爲一個RGB三元
t=linspace(0,1,100);
c='y' .* (1-t) + 'r' .* t;
現在這樣做的東西,但它並沒有真正給改變了顏色逐漸由黃色變爲紅色。如果有一個更簡單的方法,或者甚至一些自動執行此操作的自定義函數,那就太好了。謝謝。
顏色比這更難!由於顏色空間是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
正確地分配他們感謝您的答覆。這看起來不錯,但'rgb'沒有正確的維度。雖然變量'HSV'有100個三聯體,'rgb'只有三個。我預計命令'hsv2rgb'將按照術語應用並在RGB中生成100個三元組,然後我可以很容易地將它們傳遞給'scatter'。我錯過了什麼嗎? – learner271
@ learner271是的。有可能有一些大小或你錯過的東西 –