legend with multiple axes using yyaxis
144 次查看(过去 30 天)
显示 更早的评论
I am creating a plot with two different y axes. the curves are added alternately. for example:
yyaxis left
plot(A)
yyaxis right
plot(B)
yyaxis left
plot(C)
yyaxis right
plot(D)
My problem is that when I add a legend to the plot, the order of the curves is not the order in which they were created. instead, they are ordered first by the left axis
and then by the right axis. meaning if i write down "legend(A,B,C,D)" the legend entry B will correspond with the curve C and vice-versa. is there a way to fix this? The actual case there are more than 4 curves, and the number changes every time, so manual changing is not possible. many thanks in advance
Nathan
0 个评论
采纳的回答
Star Strider
2021-1-2
编辑:Star Strider
2021-1-2
Try this:
A = rand(1,10);
B = rand(1,15);
C = rand(1,20);
D = rand(1,30);
figure
hold on
yyaxis left
ha = plot(A);
yyaxis right
hb = plot(B);
yyaxis left
hc = plot(C);
yyaxis right
hd = plot(D);
hold off
legend([ha,hb,hc,hd], 'A','B','C','D')
Alternatively:
figure
yyaxis left
ha = plot(A);
hold on
hc = plot(C);
hold off
yyaxis right
hb = plot(B);
hold on
hd = plot(D);
hold off
legend([ha,hb,hc,hd], 'A','B','C','D')
Using hold is the only way to do what you want. This cannot be used with your posted code, because without the hold function, the second calls to yyaxis left and yyaxis right calls eliminate the handles to the previously plotted curves.
EDIT — (2 Jan 2021 at 17:41)
Added alternative code.
.
6 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Legend 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!