MATLAB如何绘制多个(两个以上)的legend,且自定义不同曲线的标记mark

有时,我们需要在一幅图中绘制多条曲线,为了美观,不想全部放在一个legend里面,但又希望每条曲线的标记mark不一样。前段时间我就碰到了这样的问题,虽然现在CSDN上有很多能绘制多个legend的方法,但是并没有涉及到如何同时自定义不同曲线的标记。在这里分享一下我的解决办法:

x=(0:pi/9:pi)';
y1=sin(x);
y2=2*sin(x);
y3=3*sin(x);
y11=cos(x);
y22=2*cos(x);
y33=3*cos(x);

% 绘制点线图并自定义不同曲线的标记mark,每个plot之间要加上hold on,最后加上hold off表示结束
p1=plot(x,y1,'r-',x,y2,'r--',x,y3,'r:',...    x,y1,'rp',x,y2,'rd',x,y3,'r^');
hold on;
p2=plot(x,y11,'b-',x,y22,'b--',x,y33,'b:',...   x,y11,'bp',x,y22,'bd',x,y33,'b^');
hold off;

% 绘制第1个legend,选取要标注的曲线(必须是同一个plot命令里的曲线)
h1=legend(p1(4:6),'sin(x)','2*sin(x)','3*sin(x)');
% 设置h1的位置和大小
set(h1,'position',[0.25,0.2,0.01,0.01],'units','normalized');

% 每一个legend之间都要加上该语句,即可建立新的legend,而不会覆盖之前的
ah=axes('position',get(gca,'position'),'visible','off');

% 绘制第2个legend,选取要标注的曲线(必须是同一个plot命令里的曲线)
h2=legend(ah,p2(4:6),'cos(x)','2*cos(x)','3*cos(x)');
% 设置h2的位置和大小
set(h2,'position',[0.25,0.35,0.01,0.01],'units','normalized');
绘制结果见图1


p1=plot(x,y1,'r-',x,y11,'b-',x,y1,'rp',x,y11,'bp');
hold on;
p2=plot(x,y2,'r--',x,y22,'b--',x,y2,'rd',x,y22,'bd');
hold on;
p3=plot(x,y3,'r:',x,y33,'b:',x,y3,'r^',x,y33,'b^');
hold off;

h1=legend(p1(3:4),'sin(x)','cos(x)');
set(h1,'position',[0.25,0.2,0.01,0.01],'units','normalized');
ah=axes('position',get(gca,'position'),...            'visible','off');
h2=legend(ah,p2(3:4),'2*sin(x)','2*cos(x)');
set(h2,'position',[0.25,0.3,0.01,0.01],'units','normalized');
ah=axes('position',get(gca,'position'),...            'visible','off');
h3=legend(ah,p3(3:4),'3*sin(x)','3*cos(x)');
set(h3,'position',[0.25,0.4,0.01,0.01],'units','normalized');
绘制结果见图2

在这里插入图片描述

图 1

在这里插入图片描述

图 2

如果这篇博文帮到了你,就请给我点个赞吧(#^.^#)

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐