how to give the lines color based on the distanse
1 view (last 30 days)
Show older comments
My plot below shows the oscillatory displacement of particles vs time in a pipe. Each line coreponds to each particle. Particles are released in different position from the center of pipe along the radius. How can I show each line in this plot in a different color?(My goal is the line's color changes with the distance from the center of pipe(r)).
r=sqrt(Xp^2+Yp^2): position of each particle in rdaial direction.Xp and Yp are the particle position in cartesian.
0 Comments
Accepted Answer
Image Analyst
on 16 Jul 2020
Try this (untested)
cmap = jet(length(Xp));
r = sqrt(Xp .^ 2 + Yp .^ 2);
r = round(rescale(r, 1, length(Xp)));
for k = 1 : length(Xp)
thisColor = cmap(r(k), :);
plot(Xp(k), Yp(k), '.', 'Color', thisColor, 'MarkerSize', 4)
end
It will plot dots so make sure you have enough points to make the dots be adjacent and look like a line. You can adjust the MarkerSize if you need to.
3 Comments
Image Analyst
on 18 Jul 2020
I don't really care what the range of r is. Whatever it is, we need to scale it to the number of rows in the colormap to make it easy to pick a color for that radius. So if you have 1000 dots, and you have a r that's half way out to the max r (be it 0.75 or whatever, we don't care), then the color will be the color at half of the 1000 rows, or the color at row 500, whatever that color may be.
More Answers (1)
Bruno Luong
on 18 Jul 2020
Edited: Bruno Luong
on 18 Jul 2020
% Generate 20 functions
x=linspace(0,2*pi,200)';
A=linspace(0.2,1,20);
y=A.*(sin(x).*exp(-x/2));
r=sqrt((x-pi).^2+(y).^2);% encoding color as circle centered at (pi,0)
% Function from https://www.mathworks.com/matlabcentral/fileexchange/60402-plotcolor
plot_color(x,y,r,...
jet,[0 3]) % <- colormap and range
Result
0 Comments
See Also
Categories
Find more on Lighting, Transparency, and Shading 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!