中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 495查看
  • 0回复

[MATLAB] matlab 通过plotyy绘制双Y轴图像

[复制链接]


该用户从未签到

发表于 26-8-2023 15:01:26 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


在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 allx = 0:0.01:20;y1 = sin(x);y2 = sin(10*x);figureplotyy(x,y1,x,y2)
matlab 通过plotyy绘制双Y轴图像w1.jpg

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 allx = 0:0.1:20;y1 = sin(x);y2 = sin(10*x);figureplotyy(x,y1,x,y2,'plot','stem')

matlab 通过plotyy绘制双Y轴图像w2.jpg

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轴图像w3.jpg

上面是用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轴图像w4.jpg

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轴图像w5.jpg

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轴图像w6.jpg

总结上述方法,如果只是想让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轴图像w7.jpg

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 22-11-2024 21:11 , Processed in 0.262347 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.