Legend for a graph displaying multiple runs
2 views (last 30 days)
Show older comments
Hello,
I have a working code for calculation of agch. I now want to see how different values of input Z affect the final results. I managed to plot runs with different Z values on one graph using hold on.
function [angle, alpha, al, agch, Al, Ag] = getanglech
[D, A, R] = geom();
[n, m] = setglblch();
X = setX();
[Xlm, aglm] = martineli();
for Z = 5:20
angle = arrayfun( @(X) fzero( @(angle) equationsch (angle, X, D, A, R, m, n, Z) , [1E-4, pi-1E-4]), X );
Ag = (R^2)*(pi-angle+0.5*sin(2*angle)) ;
Al = (R^2)*(angle-0.5*sin(2*angle)) ;
Slw = 2*R*angle ;
alpha = (4*Al)./(Slw*D) ;
al = Al/A ;
agch = Ag/A ;
p=loglog(Xlm, aglm, 'o', X, agch);
p(1).MarkerEdgeColor = [0 0 0 ];
xlabel('X')
ylabel('ag')
legend ('Martinelli', 'Chisholm')
legend('Location','best')
hold on
end
end
However, the legend is messy (picture attached). It should be clear in the plot which value of Z each line represents. Also, the Martinelli data should only have on entry in the legend and not every second. Can this be done? Any help appreciated.
%
0 Comments
Accepted Answer
Joseph Cheng
on 6 Apr 2017
you can look into specifying which points/lines are plotted in the legend() help documentation.
I made a quick example that you can see what is going on first of all then how to define which ones get into the legend
x =0:.1:10;
figure(1),clf
hold on
for ind = 1:10
p(ind,:) = loglog(ind,ind.^ind+ind,'o',x,x.^ind+ind);
p(ind,1).MarkerEdgeColor = [0 0 0 ];
xlabel('X')
ylabel('ag')
legend ('Martinelli', 'Chisholm')
legend('Location','best')
ltext(ind,:) = [{['point z=' num2str(ind)]},{['line z=' num2str(ind)]}]
end
title('all points were plotted')
pause(5)
legend off
legend([p(1,1); p(:,2)]',[ltext(1,1);ltext(:,2)]')
More Answers (0)
See Also
Categories
Find more on Legend 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!