# Scatter chart with colours from dark to light along the x-axis and blue to red along the y-axis

1 view (last 30 days)
T on 4 Jan 2023
Commented: William Rose on 17 Jan 2023
Hi,
I made a scatter based on interpolation of RGB colours (using only R and B) based on the y-axis data. Now I want the colours to change from dark to light based on the data of x axis. How can I do that? Thanks in advance!
Here is what I have right now and what I get:
b = [0 0 1]; % Blue
r = [1 0 0]; % Red
x =[27.5 26.8 68 70.5 43.5 45.2 72];
y = [7.2 3 7.9 1.7 4.23 1.057 0.89];
y_min_max = [min(y);max(y)];
color = interp1(y_min_max,[b;r],y);
figure()
s = scatter(x,y,80,color,'filled');
grid on; grid minor; box on
xlabel('x')
ylabel('y') William Rose on 5 Jan 2023
Edited: William Rose on 5 Jan 2023
b = [0 0 1]; % Blue
r = [1 0 0]; % Red
%x =[27.5 26.8 68 70.5 43.5 45.2 72];
%y = [7.2 3 7.9 1.7 4.23 1.057 0.89];
x = rand(1,1000);
y = rand(1,1000);
y_min_max = [min(y);max(y)];
color = interp1(y_min_max,[b;r],y); %initial color based on y value
lightness=(x-min(x))/(max(x)-min(x)); %lightness of each point, in [0,1]
lightness=repmat(lightness',1,3);
color2=color.*lightness; %adjust lightness of each point
figure()
s = scatter(x,y,80,color2,'filled');
grid on; grid minor; box on
xlabel('x')
ylabel('y') Good luck.
William Rose on 17 Jan 2023
@T, you're welcome. The answer I posted as a comment is better, in my opinion, than my initial answer. Good luck.