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‘);
时间: 2024-07-28 14:04:40

Matlab设置Legend横排、分块的相关文章

Matlab中legend位置

转自:http://blog.sina.com.cn/s/blog_7db803c10102weyk.html Matlab中legend默认的位置在NorthEast,如图所示: %Matlab中legend的位置设置 clc clear close all Npoint = 100; x = linspace(0,4*pi,Npoint); y1 = sin(x); y2 = cos(x); H = plot(x,y1,x,y2); legend('sin(x)','cos(x)'); 然而

[DevExpress]ChartControl之设置Legend位于底部并居中

关键代码: /// <summary> /// 设置Legend位于底部并居中 /// </summary> /// <param name="lengend">Legend</param> public static void SetBottomCenter(this Legend legend) { legend.Direction = LegendDirection.LeftToRight; legend.AlignmentHori

MATLAB 设置视点的函数view

MATLAB提供了设置视点的函数view.其调用格式为: view(az,el) az是azimuth(方位角)的缩写,EL是elevation(仰角)的缩写.它们均以度为单位.系统缺省的视点定义为方位角-37.5°,仰角30°. 当x轴平行观察者身体,y轴垂直于观察者身体时,az=0: 以此点为起点,绕着z轴顺时针运动,az为正,逆时针为负. EL 为观察者眼睛与xy平面形成的角度. 当观察者的眼睛在xy平面上时,el=0; 向上el为正,向下为负: 下面是一些例子:     AZ = -37

matlab中legend的任意标注

通过对句柄的组装,利用索引可以实现只标注自己想要的点或线. legend在画图中经常用到,但是如果直接legend('图形1‘,‘图形2','图形3');最终所得的标注是按照画图的先后顺序,也就是说假定我plot了3个点,那么legend就会一次标注这些点 但是,经常有这样的需求,画n个点,再把这些点连成折线,再画n个点,再连成线,最后比较这两条线的差异,这样我标注的就只想是点或者是线,但是按照顺序就会点标完了把连的线也标注了. 解决方法如下: x=[1,2,3]; y=[0.714,0.755

matlab设置figure的刻度

1. set(gca,'xtick',0:100:2500) 功能: 设置X轴坐标范围0到2500,显示间隔是100: 2.set(gca,'ytick',0:100:2500) 功能: 设置X轴坐标范围0到2500,显示间隔是100: 原文地址:https://www.cnblogs.com/yibeimingyue/p/12689004.html

matlab 设置——有问题还是要解决

http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/zyh821351004/article/details/45772345

Matlab设置网格线密度(坐标精度)

1.不精确 set(gca,'XMinorTick','on') 这样的话知识x轴显示了细的密度,网格线并没有变. 2.精确 set(gca,'xtick',-1:0.1:1); set(gca,'ytick',-1:0.1:1);

Matlab设置形状大小

x=0:10; y=2*x; plot(x,y,'-*','linewidth',0.5,'markersize',6)%%默认线宽为0.5,点大小为6 说明:调整线宽也可改变点的形状,这实际上是通过改变线的宽度来实现的,不是很好,要改变点的大小,最好用'markersize'来改变,当然也可以同时调整这两者达到你的效果. 主要是多个算法的迭代图.比如超过3个,如果精度相差不大的话,在迭代的最后几次看不出来区别,想着可以更改形状的大小,点大小改成5看着就很明显.

MATLAB设置每条直方图X坐标名称

x=[1 2 3]: n=[2 4 6]: bar(x,n): set(gca, 'XTickLabel', {'张三','李四','王五'}) 这里的gca是get current axes的缩写,即获取当前X轴句柄,类似的变量还有gco (get current object).gcf (get current figure)等 原文https://blog.csdn.net/vernice/article/details/46658353 原文地址:https://www.cnblogs.