2016-07-25 3 views
2

Я только начал изучать Matlab, и я хочу знать, есть ли простой способ изменить цвет графика рассеяния, например, от желтого до красного. Я думал об использовании командыГрафический график matlab от одного конкретного цвета к другому

scatter(x,y,100,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, содержит всю информацию о цвете, а два других - насыщенность и значение или интенсивность цвета. Просто прочитав первое значение, которое вы знаете о цвете, о котором вы говорите.

в HSV, красный и желтый H=0 является H=60 градусов, или H=60*255/360 в uint8 или 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

+0

Спасибо за ваш ответ. Это выглядит великолепно, но 'rgb' не имеет правильного измерения. Хотя переменная 'HSV' имеет 100 триплетов,' rgb' имеет только три. Я ожидал, что команда 'hsv2rgb' применит термин« мудрый »и произведет 100 триплетов в RGB, которые я мог бы затем легко перейти к« рассеиванию ». Я что-то упускаю? – learner271

+0

@ ученик271 да. возможно, есть какой-то размер или недостаток, который вам не хватает –

Смежные вопросы