MATLAB Answers

How to add legend for graph with multiple lines on it

1 view (last 30 days)
Benjamin Nienhouse
Benjamin Nienhouse on 19 Nov 2020
Answered: Srivardhan Gadila on 24 Nov 2020
Hey, so I'm wondering you I would add a legend to all the graphs, I would like to label each line on each graph and I'm not sure how to do that.
Thanks,
Ben.
h = input("Initial height (m): "); %Initial height
angle = input("Angle of elavation: "); %Degrees
v = input("Initial velocity (m/s): "); %M/S
g=-9.81; %M/S^2
angles = 0:10:180;
heights = 0:10:100;
velocity = 10:10:100;
figure
for a = angles
[x_val,y_val] = Arc(g,h,a,v);
plot(x_val,y_val);
hold on;
end
xlabel 'x (m)'
ylabel 'y (m)'
title 'Angles 0-180'
figure
for hi = heights
[x_val,y_val] = Arc(g,hi,angle,v);
plot(x_val,y_val);
hold on;
end
xlabel 'x (m)'
ylabel 'y (m)'
title 'Height 0-100 (m)'
figure
for vel = velocity
[x_val,y_val] = Arc(g,h,angle,vel);
plot(x_val,y_val);
hold on;
end
xlabel 'x (m)'
ylabel 'y (m)'
title 'Velocity 10-100 (m/s)'
m = [x_val',y_val'];
max_val = max(max(m));
figure
plot(x_val,y_val);
hold on;
[~,idx] = max(y_val);
plot(x_val(idx),y_val(idx),'r*')
text(x_val(idx),y_val(idx),'max','VerticalAlignment','Bottom','HorizontalAlignment','Left','FontSize',8)
axis([0 max_val*1.05 0 max_val*1.05]);
xlabel 'x (m)'
ylabel 'y (m)'
title 'Original Data'
function [x_val,y_val] = Arc(g,h,angle,v)
y = h;
t = 0;
x_val = [];
y_val = [];
while y >= 0
y=.5*g*t.^2+v*sind(angle)*t+h;
x=v*cosd(angle)*t;
t = t + 0.01;
x_val = [x_val,x];
y_val = [y_val,y];
end
end

  1 Comment

dpb
dpb on 19 Nov 2020
Simply call legend for each plot when you create it...

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!