matlab figure函数_matlab在同一个figure中画不同坐标的函数

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:31   2282   0

问题提出:

很多时候,我们经常需要在一个figure下,进行不同坐标范围的两个或多个函数的图。

比如,将两组或者多组数据量级相差很大的数据绘制在同一张图中以便观察,但往往数据较小的曲线会被较大的曲线淹没。例如下面的代码:

x=-1:.01:20;
y1=sin(x);
z1=100*cos(x);
plot(x,y1,x,z1);

可利用plotyy

纵坐标绘图的函数plotyy基本用法是: plotyy(x1,y1,x2,y2),即可将(x1,y1)绘制在左侧纵坐标轴中,将(x2,y2)图以右侧的纵坐标为纵轴。例如上面这个例子,我们就可以用纵坐标绘图如下:

plotyy(x,y1,x,z1);

多条曲线

刚才的代码适用于两条曲线,如果要多条曲线,我们需要将这些曲线分成两组,一组绘制在左侧纵坐标轴上,一组绘制在右侧纵坐标轴上。(注意,下面的语句要求各曲线的数据都是列向量)

y2=sin(x+.5); z2=exp(x/4); z3=x.^2; plotyy(x,[y1,y2],x,[z1,z2,z3]);

图画出来了,但我们也搞不清哪条曲线是什么了。此时可以借助图例:

legend({'sin(x)','sin(x+.5)','100cos(x)','exp(x/4)','x^2'});

还有一个方法:

xxx1= 0:0.01:20;
xxx2=0:0.01:10;
yyy1 = 0.2*xxx1+0.5;
yyy2 = sin(xxx2);
% figure % new figure
subplot(1,2,1)
plot(xxx1,yyy1)
subplot(1,2,2)
plot(xxx2,yyy2)
subplot(1,2,1)
hold on
plot(xxx2,yyy2)

8ad118ccb15a3b8df827f2137ef83d1d.png

关于什么是句柄的一段话:和主题无关
AX=plotyy(x,[y1,y2],x,[z1,z2,z3]);
有人肯定要问那个AX是什么。这就涉及到图形句柄(graphic handle)的知识。 由于这个课程定位初级学院,所以没有详细讲述讲述句柄知识。这里也不详细说,只是告诉大家,Matlab中所有的图形元素,包括图形窗口(figure),坐标系(axis),曲线(plots)都有一个唯一的编号,这些编号被称作图形句柄。此处我们用plotyy()函数绘制了一个双纵坐标图形,绘制完毕后该函数就将两纵坐标轴对应的两个坐标系的编号(句柄)保存在AX中。故,AX内有两个数值,分别是左纵坐标系,右纵坐标系的编号。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP