两个不同地块的传说在一个单一的情节

时间:2016-02-27 12:57:35

标签: matlab matlab-figure legend legend-properties

因此,如果我运行我的代码,我应该得到两个情节的传奇,但我只得到一个。有人可以给出一个解决方案。我想在一个图中绘制两个图,但单独的图例命令不起作用。代码如下:

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)

1 个答案:

答案 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');

only last legend entry both legend entries

如果您需要一次添加一个图例条目,,这是一种方法:

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(...),您实际上可以将元素添加到现有列表中。