How can I plot multiple 2d plots with a z value that changes the value of each line?
3 views (last 30 days)
Show older comments
Alessandro Maria Laspina
on 15 Jan 2021
Edited: Alessandro Maria Laspina
on 16 Jan 2021
Hello,
I have x, y and z data. I would like to plot x and y data for all different z values using plot, and vary each line color based on the corresponding z value. I want to specfically use plot so that I may use straight lines, and so I am not interested in using scatter, nor contour.
For example...
colormap(jet(3))
hold on
plot(linspace(0,10),linspace(0,10)+1)
plot(linspace(0,10),2.*linspace(0,10)+1)
plot(linspace(0,10),.25.*linspace(0,10))
hold off
hc=colorbar;
cb=1:5:10;
set(hc,'YTick',cb, 'YTickLabel', {'1','5','10'})
This will return...
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/489445/image.jpeg)
which is not what I want for multiple reasons. First, the lines do not match the jet colormap settings I have inputted. Second, the colorbar does not have all the tick labels. How can I fix this so that the color of the plot lines matches the colorbar and the ytick labels are shown correctly?
0 Comments
Accepted Answer
Mathieu NOE
on 15 Jan 2021
hello Alessandro
check this please
n = 3;
z = [1 2 0.25]';
z = sort(z,'ascend');
x = linspace(0,10);
y = z*x;
data_min = min(y,[],'all');
data_max = max(y,[],'all');
map = colormap(jet(n));
[mmap,nmap] = size(map);
hold on
for ci = 1:n
h = plot(x,y(ci,:));
set(h, 'Color', map(ci,:)) ;
end
hold off
hc=colorbar;
cb=(1/(2*n):1/n:1);
set(hc,'YTick',cb, 'YTickLabel', num2str(z))
hc.Title.String = "Z range";
2 Comments
More Answers (0)
See Also
Categories
Find more on Colormaps in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!