Effacer les filtres
Effacer les filtres

Gradient coloring of streamlines

21 vues (au cours des 30 derniers jours)
Cyril GADAL
Cyril GADAL le 10 Juil 2017
Hello,
I'm currently using the streamline function https://fr.mathworks.com/help/matlab/ref/streamline.html to plot the streamlines of a flow I'm considering. I would like to have an "evoluting" color along the streamlines according to the flow speed in each point.
I don't know how to start ... Any hint will be very appreciated ! Here is my code that is ploting the streamlines :
%%%%%%%%%%%%%%%%%Shear over topo
alpha = 70 ;
lambda = 20 ;
k = cosd(alpha) * 2 *pi/lambda ;
l = sind(alpha) * 2 *pi/lambda ;
x = 0 : 0.1 : 50 ;
y = 0 : 0.1 :50 ;
A = 1;
B = 3 ;
Amp = 0.1/sqrt(k^2+l^2) ;
[X,Y] = meshgrid(x,y) ;
TauX = Amp * sqrt(A^2+B^2)*(k^2/sqrt(k^2+l^2)).*cos(k.*X+l.*Y + atan(B/A)) ;
TauY = Amp * sqrt(A^2+B^2)*(k*l/sqrt(k^2+l^2)).*cos(k.*X+l.*Y + atan(B/A)) ;
Topo = Amp .* cos(k.*X + l.*Y) ;
figure
imagesc(x,y,Topo)
hold on
hlines = streamline(X(1:step:end,1:step:end),Y(1:step:end,1:step:end),1 + TauX(1:step:end,1:step:end), TauY(1:step:end,1:step:end),0*y(1:step:end,1:step:end),y(1:step:end,1:step:end)) ;
set(hlines, 'Color', 'k')
Thank you very much !

Réponses (1)

Manish Annappa
Manish Annappa le 12 Juil 2017
As per your description, you either want to set different colors to each line in variable 'hlines' or you want to set multiple colors to a single line (varying colors along Y axis).
1) You can set different colors to each line using the code snippet below.
colorstring = 'kbgry';
for i = 1:5
set(hlines(i), 'Color', colorstring(i))
end
2) As per the link below, it is not possible to set different colors for different region of a line.
However, below link that illustrates the usage of patch objects may help you.

Catégories

En savoir plus sur Line Plots dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by