欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Matlab设置Legend横排、分块

发布时间:2025/5/22 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Matlab设置Legend横排、分块 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
高级用法1:指定legend显示的位置: legend({'str1','str2','strn'},'Location','SouthEast'); 比较鸡肋,画好图后树手动拖动就好了 高级用法2:指定显示某几条曲线的legend: 例如你有25条曲线,想显示其中1,6,11,16,21的legend H = plot(data); legend(H([1 6 11 16 21],'1,'6','11’,'16','21'); 高级用法3:legend横排 hl = legend(H([1 6 11 16 21],'1,'6','11’,'16','21'); set(hl,'Orientation','horizon') 高级用法4:不显示方框: hl = legend(H([1 6 11 16 21],'1,'6','11’,'16','21'); set(hl,'Box','off');

  查看这个的初衷是因为四条曲线的对比图,但是有些曲线差别太大,比如A在[1.8,1.82],B在[0.9,1.1],CD曲线在中间这样的话,因为A曲线的存在,中坐标最大值是1.82但是变化很不明显,所以该曲线在图的最上方,而且紧挨着图的上边界,因为图例在右上方,这样肯定会覆盖曲线,所以想着横排。

  但是这种方法也不好做好的事拆开。

  Matlab提供的legend函数,给出的legend经常覆盖了某些曲线(尤其是用IEEE模板的时候,一般图片宽度不超过315px).

a=linspace(0,2*pi,100); y1=100*sin(a); y2=50*cos(a); y3=tan(a); y4=log(a); y=[y1;y2;y3;y4]; figure p=plot(a,y) legend('sin','cos','tan','log')

  如下图所示:


  Matlab画图实现两个或多个legend,不同排版    这显然不是你想要的,你的reviewers也会肯定让你修改的!

  原因是Matlab的Legend函数,只能水平或者竖直排版!

  解决方法:把legend分成几个,相对独立,这样可以使用鼠标随意移动,确保不遮挡曲线。

  结果如下图所示:

  位置可以随便写,图绘制好厚,手动拖动。

a=linspace(0,2*pi,100); y1=100*sin(a); y2=50*cos(a); y3=tan(a); y4=log(a); y=[y1;y2;y3;y4]; figure p=plot(a,y)legend(p(1:2),'sin','cos'); ah=axes('position',get(gca,'position'),...'visible','off'); legend(ah,p(3:4),'tan','log','location','west');

总结

以上是生活随笔为你收集整理的Matlab设置Legend横排、分块的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。