Разброс сюжета с цветами от темного до яркого - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу разбросать график некоторых данных разными цветами.Первый ряд должен быть темно-синим, и для каждого ряда он должен быть немного ярче.В настоящее время мне удалось сделать это только от темно-синего через другие цвета к желтому.

Вот мой код:

c = linspace(1,10,length(x));
sz = 25;
scatter(x,y, sz,c,'filled');
colorbar

С полученным графиком.

enter image description here

Как сделать постепенную цветовую шкалу от синего до светло-голубого?

1 Ответ

5 голосов
/ 19 сентября 2019

Причина, по которой ваши очки переходят с синего на желтый, заключается в том, что они используют цветовую карту по умолчанию: parula .Доступно различных цветовых карт , но для блюза нет встроенной цветовой карты.Однако вы можете легко определить его самостоятельно, используя триплет RGB:

n = 30;  % The higher the number, the more points and the more gradual the scale
x = rand(n,1);
y = rand(n,1);
c = linspace(0,1,length(x)).';  % Range from 0 to 1
RGB = zeros(length(x),3);  % Red is zero, green is zero, blue builds up
RGB(:,3) = c;
sz = 25;

scatter(x,y, sz,RGB,'filled');
colormap(RGB) % Sets the correct colours for the colour bar
colorbar

black-blue

Триплет RGB представляет собой вектор-строку из трех элементов:[red green blue], где [0 0 0] - черный, а [1 1 1] - белый.Если оставить первые два элемента равными нулю, а третий прогон с 0 до 1 приведет к цветовой шкале от черного до чистого синего.

В качестве альтернативы, если вы хотите перейти с черного на чистыйот синего до чистого белого, вы можете сначала насыщить синий, как и раньше, затем оставить его на 1 и постепенно увеличивать красный и зеленый до 1 постепенно и одновременно во второй половине:

n = 30;
x = rand(n,1);
y = rand(n,1);
c = linspace(0,1,floor(length(x))./2).';  % Go to 1 in half the length
RGB = zeros(length(x),3);
RGB(1:floor(length(x)/2),3) = c; % Sets the blue
RGB(floor(length(x)/2)+1:end,1) = c; % Sets the red
RGB(floor(length(x)/2)+1:end,2) = c; % Sets the greed
RGB(floor(length(x)/2)+1:end,3) = 1; % Leaves blue at 1
sz = 25;

h1 = scatter(x,y, sz,RGB,'filled');
colormap(RGB);
colorbar

black-blue-white

...