因此,如果我运行我的代码,我应该得到两个情节的传奇,但我只得到一个。有人可以给出一个解决方案。我想在一个图中绘制两个图,但单独的图例命令不起作用。代码如下:
close all;clear all;clc
load stiffhless
figure
plot(FI*180/pi,ktot);
xlabel('\psi [deg]');ylabel('k');
title('Stiffness coeff. of flapping motion eq.')
xlim([0,360])
set(gca,'XTick',0:45:360)
grid on
legendCell=strcat('\mu=',strtrim(cellstr(num2str(mu_vect'))));
legend(legendCell)
hold on
load stiffarti
plot(FI*180/pi,ktot,'--');
xlabel('\psi [deg]');ylabel('k');
title('Stiffness coeff. of flapping motion eq.')
xlim([0,360])
set(gca,'XTick',0:45:360)
grid on
legendCell=strcat('\mu=',strtrim(cellstr(num2str(mu_vect'))));
legend(legendCell)
答案 0 :(得分:1)
Per @ dfri的评论,如果你能解决你所遇到的minimal, complete and verifiable example问题,我们最容易帮助你(这样做,你甚至可以自己解决问题!)。
仔细阅读相关的MATLAB文档(legend)也是一个很好的起点,当看似无辜的命令行为不像你期望的那样。
除了这些评论之外,这里有两种可能的方式来包含多个图例条目:
如果您想一次添加所有图例条目,我相信这是您问题的最小版本:
x=1:10; y=rand(1,10);
figure; plot(x,y);
legendCell='foo';
legend(legendCell);
hold on;
plot(x,-y);
legendCell='bar';
legend(legendCell);
如果是这样,第二次拨打legend
会覆盖第一个电话。在这种情况下,@ dfri的评论是完全正确的 - 这就是你的意思:
figure; plot(x,y);
legendCell1='foo';
hold on;
plot(x,-y);
legendCell2='bar';
legend(legendCell1,legendCell2);
甚至更好,不需要legendCell1/2
变量:
legend('foo','bar');
如果您需要一次添加一个图例条目,,这是一种方法:
figure; plot(x,y);
L=legend('foo');
hold on;
plot(x,-y);
L=legend(L.String,'bar');
plot(x,2*y);
L=legend(L.String,'boo');
plot(x,-2*y);
L=legend(L.String,'far');
...
为图例对象指定变量名L
,可以获取所有现有图例字符串L.String
的列表。因此,通过再次调用L=legend(...)
,您实际上可以将元素添加到现有列表中。