MATLAB Answers

0

2D plot with 3rd variable

Asked by Michel tawil on 12 Jul 2019
Latest activity Commented on by Michel tawil on 14 Sep 2019 at 12:25
hey, i have many lines in X and Y axes, need to color each line according to a variable Z, how to do that ?
x
y
already plotted all the lines needed but need to add the color for each line according to the value of Z. for example if Z= 0 the line will take a color and if it;s 0.8 it takes another color( i mean how to add a colorbar for this )
thanks

  4 Comments

Show 1 older comment
thank you for your reply,
Scatter will not work because it only shows a point while i need to plot a line then color it
Part of the code :
p1(i,:)=[reference(1,i) y];% just making a point 1 in order to plot the line
p2(i,:)=[reference(1,i)+x(1,i) y]; % this is the second point of my line
averageV=averageV/max(averageV); % this is the value that i need to color the line with
for j=1:240
plot([ p1(j,1) p2(j,1)], [p1(j,2) p2(j,2)]);
end
each one of the 240 lines plotted corresponds to a value of averageV, i want the line to take a color according to that value
John Doe on 12 Jul 2019
You can modify the following code for your purposes.
where n will = the size of averageV
y(1:241,1) = 1:241
n = size(y, 1);
colors = hsv(n);
h = line([0 10], [y(1:241,1) y(1:241,1)])
set(h, {'color'}, num2cell(colors, 2));
Hey, if it's only taking the size, how will it plot according to the value of averageV,
i want the line color plotted in XY according to the value of averageV not according to the size of averageV.
sorry for bothering again

Sign in to comment.

1 Answer

Answer by Cristian Garcia Milan on 12 Jul 2019
 Accepted Answer

Hello Michel,
I think you can use RGB colors so if you have the data in rows in X and Y it would be somethink like:
figure hold on for i = 1:size(X,1) plot(X(i,:),Y(i,:),'color',[Z(i) 0 1]) % There is needed that Z has a value from 0 to 1 for each row end
Hope it helps!

  4 Comments

Show 1 older comment
Okey, so you can use plot3()
for j=1:240
plot3([ p1(j,1) p2(j,1)], [p1(j,2) p2(j,2)],[Z(i),Z(i)]);
end
colorbar
Z would be any high, and MATLAB will refer that with a color going from blue to yellow.
Is that what you want?
thank you, i guess this is exactly what i want. i'll make sure of it
Michel tawil on 14 Sep 2019 at 12:25
hello again, the plot3 didn't work.
My point is that for each line i am plotting, i want it to be colored according to a third variable ( that is the velocity of that line), the index of the lines and variables is not a problem, i just need a function in matlab that takes the color from a matrix different than the one used to plot(3rd variable)
nothing worked till now. i have 235 lines and each one of them has a velocity

Sign in to comment.