Matlab中的plotyy用法总结

在梳理数据,或者写论文的时候往往需要画出两个纵坐标不同的图,以显现两组数据的不同变化,在这种情况下,一般两组数据的横坐标均是相同的,但是纵坐标确实不是一个数量级的,所以为了更好的表现两组数据的变化趋势,需要用到plotyy函数绘制双纵坐标的二维图,具体用法总结如下:

调用格式:

1.plotyy(X1,Y1,X2,Y2):以左、右不同纵轴绘制X1-Y1、X2-Y2两条曲线。
2.plotyy(X1,Y1,X2,Y2,FUN1):以左、右不同纵轴把X1-Y1、X2-Y2两条曲线绘制成FUN1指定形式的两条曲线。
3.plotyy(X1,Y1,X2,Y2,FUN1,FUN2):以左、右不同纵轴把X1-Y1、X2-Y2两条曲线绘制成FUN1、FUN2指定的不同形式的两条曲线。
4.[AX,H1,H2]=plotyy(...):返回AX中创建的两个坐标轴的句柄以及H1和H2中每个图形绘图对象的句柄。AX(1)为左侧轴, AX(2)为右侧轴。

注意事项:

AX返回的是两个坐标轴的句柄,而H1和H2则是表示的每个图像的句柄。

左纵轴用于X1-Y1数据对,右纵轴用于X2-Y2数据对。
轴的范围、刻度都自动产生。如果要人工设置,必须使用axis函数。
FUN、FUN1、FUN2可以是MATLAB中所有接受X-Y数据对的二维绘图指令,如plot函数。

(1)如何设置坐标轴刻度?
需要设置双y轴的刻度,用到以下函数,
set(gca,'XTick',[0:15:100])
set(gca,'yTick',[0:20:350])
只是设置左边的y轴刻度,那么,右边y轴怎么设置刻度标注?

[AX]=plotyy(x1,y1,x1,y2);
得到两个axes句柄,AX(1)和AX(2)
set(AX(1),'yTick',[0:15:350])  %设置左边Y轴的刻度
set(AX(2),'yTick',[0:30:350]) %设置右边Y轴的刻度

(2)如何设置坐标轴的标注

双纵坐标的标注实现
[AX]=plotyy(x1,y1,x1,y2);
set(get(AX(1),'Ylabel'),'string','left Y-axis‘);
set(get(AX(2),'Ylabel'),'string','right y-axis');

例如:

figure;
t=0:1:9*pi;
[H,Ha,Hb]=plotyy(t,sin(t),t,exp(t));
d1=get(H(1),'ylabel');
set(d1,'string','yayacpf');
d2=get(H(2),'ylabel');
set(d2,'string','bbs from hit','fontsize',18);

(3)如何设置线型?
例如:

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

(4)如何加注图例?

例如:

x=linspace(0,2*pi,50);
[ax,h1,h2]=plotyy(x,sin(x)+cos(x),x,exp(x));

set(h1,'linestyle','-')
set(h2,'linestyle','-')
set(h1,'marker','o')
set(h2,'marker','+')
hold on
x=linspace(0,2*pi,50);
hh=line(x,cos(x));
set(hh,'linestyle','-')
set(hh,'marker','s')

hold on
hhf=line(x,sin(x));
set(hhf,'color','r')
set(hhf,'linestyle','-')
set(hhf,'marker','*')
legend([h1,h2,hh,hhf],'sin(x)+cos(x)','exp(x)','cos(x)','sin(x)',0);  %加注图例

可以看到,对坐标轴操作使用AX句柄,而对图像操作使用H1和H2;

猜你喜欢

转载自blog.csdn.net/qq_25018077/article/details/88395445