大家好,又见面了,我是你们的朋友全栈君。
当需要画出2个两个不同纵坐标的图时,此时的横坐标的图是相同的,在MATLAB中这个函数叫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、plotyy(X1,Y1,X2,Y2) 直接简单地画出2个坐标不同的图
clc;clear
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure % new figure
plotyy(x,y1,x,y2)
2、plotyy(X1,Y1,X2,Y2,function)调用时选用function的画图函数
这里的function函数有plot, semilogx, semilogy, loglog, stem等,分别表示一般的画图函数,半对数(x),半对数(y),全对数函数,以及火柴棒图
在这里我们选用plot,stem进行演示
x = 0:0.1:10;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure
plotyy(x,y1,x,y2,'plot','stem')
3、和 2 是同样的用法
4、[AX,H1,H2] = plotyy(___)利用图形句柄进行操作
AX 为坐标轴的句柄,其中 AX(1)为左侧轴,AX(2)为右侧轴 H1 与 H2 表示每个图像的句柄
4.1 对 H1,H2 的操作
t=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');
这里是用set函数,也可以用面对对象的编程思路
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);
hLine1.LineStyle = '--';
hLine2.LineStyle = ':';
4.2 对坐标轴AX的操作
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure
[hAx,hLine1,hLine2] = plotyy(x,y1,x,y2);
title('Multiple Decay Rates')
xlabel('Time (\musec)')
ylabel(hAx(1),'Slow Decay') % left y-axis
ylabel(hAx(2),'Fast Decay') % right y-axis
5、plotyy(AX1,___)这个用法目前总结的较少,有待进行进一步探究
6、总结上述方法,一些综合性的plotyy图
如果只是想让plotyy的图美一些,可以使用其如下形式的调用方式:
[AX,H1,H2] = plotyy(…)
其中AX(2)就是右边Axes对象的句柄,拿到它以后就可以set或者get来处理了,也可以把其ytick关掉。
6.1 此图应用上面1-5介绍的方法,用plotyy函数画图
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*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 = 200*exp(-0.05*x).*sin(x)';'y2 = 0.8*exp(-0.5*x).*sin(10*x)'});
xlabel('Zero to 20 \musec.');
title('Labeling plotyy');
6.2 这是另一种画图的方式,与前面的,左y轴与右y轴对应同一个坐标位置;与前面介绍的方法不同
tp=(0:100)/100*5;
yp=8+4*(1-exp(-0.8*tp).*cos(3*tp)); % 压力数据
tt=(0:500)/500*40;
yt=120+40*(1-exp(-0.05*tt).*cos(tt)); % 温度数据
% 产生双坐标系图形
clf reset,h_ap=axes('Position',[0.13,0.13,0.7,0.75]);
set(h_ap,'Xcolor','b','Ycolor','b','Xlim',[0,5],'Ylim',[0,15]);%压力
nx=10;ny=6;
pxtick=0:((5-0)/nx):5;
pytick=0:((15-0)/ny):15;
set(h_ap,'Xtick',pxtick,'Ytick',pytick,'Xgrid','on','Ygrid','on') %设置tick
h_linet=line(tp,yp,'Color','b');
set(get(h_ap,'Xlabel'),'String',' 时间 /rightarrow (分) ')
set(get(h_ap,'Ylabel'),'String',' 压力 /rightarrow(/times10 ^{5} Pa )')
h_at=axes('Position',get(h_ap,'Position'));%温度
set(h_at,'Color','none','Xcolor','r','Ycolor','r');
set(h_at,'Xaxislocation','top')
set(h_at,'Yaxislocation','right','Ydir','rev')
set(get(h_at,'Xlabel'),'String','/fontsize{15}/fontname{ 隶书 } 时间 /rightarrow (分) ')
set(get(h_at,'Ylabel'),'String',' ( {/circ}C )/fontsize{15} /leftarrow /fontname{ 隶书 } 零下温度 ')
set(h_at,'Ylim',[0,210])
line(tt,yt,'Color','r','Parent',h_at)
xpm=get(h_at,'Xlim');
txtick=xpm(1):((xpm(2)-xpm(1))/nx):xpm(2);
tytick=0:((210-0)/ny):210;
set(h_at,'Xtick',txtick,'Ytick',tytick)
7 参考链接
mathworks官网
CSDN:Matlab中的plotyy用法总结
CSDN:Matlab plotyy画双纵坐标图实例(PS:也就是第六部分的内容)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148824.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...