Plotting 2 streamlines on the same plot

조회 수: 6 (최근 30일)
José Irusta Solera
José Irusta Solera 2021년 2월 9일
답변: Ojas 2024년 6월 20일
Hi everyone.
I need to plot 2 different streamlines on the same plot. I was able to do it, but I can't insert a propper legend. My plot code is:
figure
a=streamline(XYe);
hold on
area(circ(1,:),circ(2,:),'FaceColor',Col,'EdgeColor',Col)
hold off
xlabel('x/a [adim.]','FontSize',25)
ylabel('y/a [adim.]','FontSize',25)
set(a,'Color','k')
legend('Stokes','Euler')
But the legend doesn't show the color of the lines correctly (both lines on the legend are blue, the default color of the streamline, and 'Euler' doesn't appear black on the legend, but it does appear black on the plot).
I know the use of set and the figures is not appropiate, and I know this is just a detail, but that's my problem, I want to understand figures, and "set". It would be very helpful if you could help me plot this, and also help me understand the mechanism of figures.
Thanks in advance.
José

답변 (2개)

Ojas
Ojas 2024년 6월 20일
Hi,
I'm not sure if you could solve your problem, but I discovered the method to solve the problem. You insert "" as many times as the lines are which you do not want in the legend, and then add your actual name in the legend. Attaching the code for the same below. Here, I have the length of the streamlines as 9, hence I inserted my true label once, and then used "" 8 times. Hope this helps.
[startX,startY] = meshgrid(xbins(1:9), zbins(1));
figure(4);
axis equal
lineobj = streamline(X, Z, abs(u'), abs(v'), startX, startY);
for i=1:9
lineobj(i).LineWidth = 2;
end
hold on
A = scatter(x, z, 3, "red", "filled", "o", "MarkerEdgeColor","flat", "MarkerFaceColor","auto" );
hold off
xlabel("X")
ylabel("Z")
title("Streamlines plot")
legend("Force streamlines", "", "", "", "", "", "", "", "", "Particles")
legend('show')

darova
darova 2021년 2월 9일
Use handlers properly
clc,clear
[x,y,z] = peaks(5);
h1 = plot(y,z,'r');
hold on
h2 = plot(y,0.9*z,'b');
hold off
legend('red','blue')
%legend([h1(1) h2(1)],'red','blue')
  댓글 수: 3
darova
darova 2021년 2월 10일
Try this way:
h = streamline(x,y,u,v,startx,starty);
set(h,'color','r')
José Irusta Solera
José Irusta Solera 2021년 2월 10일
That works on changing the color of the lines on the plot, but the problem is the legend. If I do that, and don't do anything on the legend, then the legend doesn't appear. If I use:
legend('show')
Then the legend shows "Stokes" (or "Euler") lots of times, according to the number of lines there are. I just need it to appear once, like in the image I presented. That's what I can't do.
Thank you.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Legend에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by