matlab legend的参数化使用,根据条件产生不同的legend

学习matlab legend使用时,只注意到了常规的做法,例如legend(‘l1’,‘l2’,‘l3’,‘l4’),
如果画了4条曲线,则顺序显示’l1’,‘l2’,‘l3’,'l4’的图例。
再复杂一些,可通过plot或者line等的句柄来对应画出图例, 例如:
f1 = plot(a);
f2 = line([x1, x2],[y1,y2]);
legend([f1,f2], ‘plot’, ‘line’);
这样f1对应的图例为‘plot’, f2 对应的图例为‘line’。

但是在实际应用中,我发现,有些时候,legend([f1,f2], ‘plot’, ‘line’)这种用法,[f1,f2]这个句柄数组有时是不确定的,
例如判断是否有某个文件,如果有该文件则读取该文件的数据并作图,例如f2,但是如果没有该文件,则不画,图例中就不显示该f2对应的‘line’,这怎么办呢?通过查询以及实验,找到了方法如下:

句柄,是数组形式的,所以建立一个句柄数组,handleList = [], 句柄对应的图例内容为字符串,因此用元组来存放图例字符内容, legendText = {}.
当判断具备画图条件时,将该画图对应的句柄(thisHandle)存放进handleList中, 方法为 handleList = [handleList, thisHandle],但是图例字符内容为字符串,存放在元组中,不可以按照数组的方式进行内容存放,需要通过索引来添加图例字符串内容:legendText{index} = ‘plot’; index = index + 1;其中index为自建的变量,用来指定存放位置。

当所有的判断条件判断完毕,handleList 和 legendText中就存放着一一对应的内容,最后使用命令legend(handleList, legendText),可以达到根据不同的条件,画出不同的曲线,并显示相应的图例的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值