matlab 通过plotyy绘制双Y轴图像
  NTGlKyq7MwNU 2023年11月02日 39 0

✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。

🍎个人主页:算法工程师的学习日志

在matlab中,有时候涉及到数据的对比,需要在同一个图对比数据和增量之类的,这时候需要绘制双Y轴图像,此时可以用plotyy函数实现。下面列举的是一个简单的画plotyy的应用,几种不同的调用格式

plotyy(X1,Y1,X2,Y2)
plotyy(X1,Y1,X2,Y2,function)
plotyy(X1,Y1,X2,Y2,'function1','function2')
[AX,H1,H2] = plotyy(___)
plotyy(AX1,___)

1、绘制2个坐标不同的图

clc;clear;close all
x = 0:0.01:20;
y1 = sin(x);
y2 = sin(10*x);
 
figure
plotyy(x,y1,x,y2)

matlab 通过plotyy绘制双Y轴图像_数据集

2、绘制不同类型的图像

plotyy(X1,Y1,X2,Y2,'function1','function2')或者plotyy(X1,Y1,X2,Y2,function)

function函数有plot, semilogx, semilogy, loglog,stem等,分别表示一般的画图函数,半对数(x),半对数(y),全对数函数,以及火柴图,在这里选用plot,stem进行介绍


clc;clear;close all
x = 0:0.1:20;
y1 = sin(x);
y2 = sin(10*x);
 
figure
plotyy(x,y1,x,y2,'plot','stem')



matlab 通过plotyy绘制双Y轴图像_句柄_02

3、[AX,H1,H2] = plotyy(___)利用图形句柄进行操作

AX 为坐标轴的句柄,其中 AX(1)为左侧轴,AX(2)为右侧轴, H1与H2表示每个图像的句柄

3.1、对 H1 H2的操作

t=0:0.1:8;
[ax,h1,h2]=plotyy(t,sin(t),t,cos(t)); 
set(h1,'linestyle','-','marker','o','color','r');
set(h2,'linestyle',':','marker','x','color','b');

matlab 通过plotyy绘制双Y轴图像_H2_03

上面是用set函数,也可以用面对对象的编程思路

x = 0:0.1:20;
y1 = sin(x);
y2 = sin(10*x);
[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);
hLine1.LineStyle = '--';
hLine2.LineStyle = ':';

matlab 通过plotyy绘制双Y轴图像_H2_04

3.2、对坐标轴AX的操作

x = 0:0.1:20;
y1 = sin(x);
y2 = sin(10*x);
 
figure 
[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);
title('算法工程师样例')
xlabel('时间/s')
ylabel(hAx(1),'Y1 axis')
ylabel(hAx(2),'Y2 axis')

matlab 通过plotyy绘制双Y轴图像_数据集_05

4、对两个数据集使用右 y 轴

使用两个 y 轴在一个图上绘制三个数据集。绘制一个与左 y 轴关联的数据集。使用包含两列的矩阵绘制与右 y 轴关联的两个数据集。

x = linspace(0,10);
y1 = sin(x);
y2 = sin(10*x);
y3 = 0.8*sin(10*x);


figure
[hAx,hLine1,hLine2] = plotyy(x,y1,[x',x'],[y2',y3']);

matlab 通过plotyy绘制双Y轴图像_H2_06

总结上述方法,如果只是想让plotyy的图美一些,可以使用其如下形式的调用方式:[AX,H1,H2] = plotyy(…) 其中AX(2)就是右边Axes对象的句柄,拿到它以后就可以set或者get来处理了,也可以把其ystick关掉。

x = 0:0.01:20;
y1 = sin(x);
y2 = sin(10*x);
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');
 
set(AX(1),'XColor','k','YColor','b');
set(AX(2),'XColor','k','YColor','r');
 
HH1=get(AX(1),'Ylabel');
set(HH1,'String','Left Y-axis');
set(HH1,'color','b');
 
HH2=get(AX(2),'Ylabel');
set(HH2,'String','Right Y-axis');
set(HH2,'color','r');
 
set(H1,'LineStyle','-');
set(H1,'color','b');
set(H2,'LineStyle',':');
set(H2,'color','r');
 
legend([H1,H2],{'y1 = sin(x)';'y2 = sin(10*x)'});
xlabel('Time/s');
title('算法工程师样例');

matlab 通过plotyy绘制双Y轴图像_数据集_07

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
NTGlKyq7MwNU