查看: 2725|回复: 5|关注: 0

[已答复] 可否叠加使用legend

[复制链接]

新手

5 麦片

财富积分


050


8

主题

22

帖子

0

最佳答案
发表于 2010-6-12 18:01:55 | 显示全部楼层 |阅读模式
我编了一个gui界面,当输入值不同时,坐标轴会出现不同的曲线,我想将这些曲线叠加在一起显示,所以用了一个hold on语句,但是由于没有legend函数所以容易不清楚,因此想问问有没有可能将legend函数累加输出,比如,当运行第一次时,只出现一个legend的标注,当运行第二次时,则出现两个。。。

论坛优秀回答者

139

主题

1万

帖子

1557

最佳答案
  • 关注者: 969
发表于 2010-6-12 18:08:21 | 显示全部楼层

回复 1# wickay 的帖子

给你举一个多legend的例子:
t=0:0.1:10;
y=sin(t);
x=cos(t);
l=plot(t,y,'r-');
hold on
p=plot(t,x,'g-');
[legh,objh,outh,outm]=legend(l,'y',1);
legh2=copyobj(legh,gcf);
[legh2,objh2]=legend(p,'x',2);
《Simulink仿真及代码生成技术入门到精通》已经由北航出版社出版:http://item.jd.com/1796228806.html

新手

5 麦片

财富积分


050


8

主题

22

帖子

0

最佳答案
 楼主| 发表于 2010-6-12 21:27:25 | 显示全部楼层
谢谢版主啊,不过我不是只运行一次,给你看看我简化的代码吧:
x=1:10;
a=str2double(get(handles.edit1,'String')); %通过GUI界面里面输进的值给a赋值,每次运行,输入的a值都不同,从而得到不同的y
y=a.*x;
plot(x,y);
hold on

通过这个hold on可以让每次运行出来的图叠加在一起,但是容易混淆,所以想加legend来标注,楼上的方法,我感觉无从下手,能不能请版主给我改改,看看能不能实现

新手

10 麦片

财富积分


050


0

主题

60

帖子

0

最佳答案
发表于 2010-10-27 12:32:33 | 显示全部楼层

试一试这个

[legend_h,object_h,plot_h,text_strings] = legend;
legend(text_strings,'ADD LEGEND')

入门

56 麦片

财富积分


50500


46

主题

394

帖子

9

最佳答案
  • 关注者: 4
发表于 2010-10-27 14:10:54 | 显示全部楼层
这个我曾遇到过,到还未找到好方法,学习

新手

10 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 4 天前 | 显示全部楼层
本帖最后由 snafumeander 于 2019-7-12 16:52 编辑

legend函数可以接受字符串的cell,通过循环把图例写到cell里面就可以实现了。
  1. legend_char=cell(n_max,1);
  2. for n=1:n_max
  3. legend_char{n}=['This is ',num2str(n)];
  4. end
  5. legend(legend_char);
复制代码

不过这个貌似只能最后一起显示
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表