How to add a legend for a plot generated with a function multiple times?

7 次查看(过去 30 天)
I am working with orbits around Earth. To plot them, I use a function with the orbital parameters as input. My problem is that I don't know how to create a legend when calling the function more than one time to show on the same plot multiple orbits.
Adding a legend manually like this
plotOrbit(a, e, i, OM, om, th0, thf, dt, mu)
plotOrbit(a1, e1, i1, OM1, om1, th0, thf, dt, mu)
legend("Initial orbit", "Final orbit")
give me a wrong line for the second orbit. (It should be orange instead of a random blue tiny line).
I tried to follow a different approach
txt = 'Initial orbit';
plotOrbit(a, e, i, OM, om, th0, thf, dt, mu, txt)
txt = 'Final orbit';
plotOrbit(a1, e1, i1, OM1, om1, th0, thf, dt, mu, txt)
legend show
Adding this line in the function script
plot3(r(1, :), r(2, :), r(3, :), 'DisplayName',txt, LineWidth=2)
Now the legend shows the right lines, but the result shows 4 extra labels that I don't know how to remove.
ù
Do you know how to solve this? Thank you
  2 个评论
Steven Lord
Steven Lord 2023-4-14
It's going to be difficult to offer any specific suggestions without seeing what your plotOrbit function is doing.
Niccolò Bruno
Niccolò Bruno 2023-4-14
Even if @Antoni Garcia-Herreros helped me already, I add the function for completeness.
function plotOrbit(a, e, i, OM, om, th0, thf, dt, mu)
r = [];
for t = th0:dt:thf
r = [r, parorb2rv(a, e, i, OM, om, t, mu)];
end
% this gives the position in a cartesian frame in the form r = [x; y; z]
figure(1)
plot3(r(1, :), r(2, :), r(3, :), LineWidth=2)
axis equal; % Make the axes scales match
title("Orbits");
hold on; % Add to the plot
Terra3d %function to add the 3d model of the Earth
end

请先登录,再进行评论。

采纳的回答

Antoni Garcia-Herreros
编辑:Antoni Garcia-Herreros 2023-4-14
Hello,
As @Steven Lord pointed out it's hard to suggest anything without knowing how plotOrbit works, but you could try something like this:
plotOrbit(a, e, i, OM, om, th0, thf, dt, mu)
plotOrbit(a1, e1, i1, OM1, om1, th0, thf, dt, mu)
l=legend('Initial orbit','','','Final orbit');

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Legend 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by