MATLAB基本2D作图(2)
在同一个坐标系中画多个图
至少有三种方法可以在同一个坐标系中画多幅图:
-
最简单的办法。
使用hold命令让绘图操作保持在当前的坐标系中。在hold释放之前(使用hold off或者只使用hold),所有的绘图操作都会添加到当前的坐标系中;
-
使用plot绘图的时候传入多组参数。
例如:plot(x1, y1, x2, y2, x3, y3, ...)将会绘制向量对(x1, y1),(x2, y2)等等。
这种方法的优点:向量对可以有不同的长度,MATLAB自动地为每一对选择不同地颜色。
如果你正在同一坐标系中绘制两幅图的话,plotyy是个有用的函数。它允许左右两侧y轴不同。例如:x=(0:pi/20:2*pi); plotyy(x, sin(x), x, 10*cos(x))
会得到以下结果:
plotyy -
使用plot(X,Y)
不同的地方在于,X,Y可以都是矩阵或者有一个矩阵一个向量。下面要分几种情况:
-
如果X或者Y其中一个是矩阵,一个是向量,矩阵的行或者列会和向量结合来绘图,每个都使用不同的颜色。使用矩阵的行还是列,取决于谁和向量的元素数量相同。如果是方阵的话,那就使用列。看下面的例子:
matrix-xy由于X的行的数目和y的元素数目相等,那么使用X的每一列和y进行绘图。建议大家自己尝试一下。
plot-mat-v -
如果X和Y是具有相同维数的矩阵,那么就是使用X的第i列与Y的第i列进行绘图,看下面的例子:
X=rand(3,2);Y=rand(3,2); plot(X,Y,'om--')
得到结果如下图:
plot_mat_mat
-
如果不指定X,只传入矩阵Y作为参数:plot(Y)。那么Y的每一列将会以元素所在行号为索引绘图。例如:
Y=rand(3,2);plot(Y,'om--')
得到结果如下图:
plot-y
-
线风格、点标记和颜色
通过给plot函数传递一个字符串参数来指定绘图中使用的线风格、点标记和颜色。例如:
plot(x,y,'--')
表示画线的时候使用虚线;
plot(x,y,'o')
表示在数据点处画上圆圈,并且不用线来连接他们;
plot(x,sin(x),x,cos(x),'om--')
表示以默认的风格绘制sin(x),用品红色虚线和圆圈绘制cos(x)。
plot函数有很多其他的参数,help plot会告诉你更多的选项。
plot_style坐标轴
当你使用MATLAB画图的时候,它会自动的缩放坐标轴来适应数据的范围。可以这样指定坐标轴范围:
axis([xmin, xmax, ymin, ymax])
如果你只想指定最大值或者最小值其中之一,可以使用Inf或者-Inf让MATLAB对其他坐标轴自动缩放。
使用axis auto可以返回到坐标轴自动缩放的状态。
v = axis返回当前的坐标轴缩放向量v。
axis manual使绘图保持当前的坐标轴缩放,后续的绘图使用同样的坐标轴。
axis equal使x轴和y轴单位长度等长,这样画出来的圆形看起来使圆的。可以通过axis normal取消。
axis on和axis off可以控制坐标轴和数值标记是否显示。
在同一个窗口中画多幅图
使用subplot函数在同一个窗口中绘制多幅图。subplot(m,n,p)把窗口分成m*n个坐标系的集合,并选择第p个坐标系作为当前绘图操作的坐标系。例如,下面的语句将会绘制4幅图:
[x,y]=meshgrid(-3:0.3:3);
z=x.*exp(-x.^2 - y.^2);
subplot(2,2,1)
mesh(z),title('subplot(2,2,1)')
subplot(2,2,2)
mesh(z),view(-37.5,70),title('subplot(2,2,2)')
subplot(2,2,3)
mesh(z),view(37.5,-10),title('subplot(2,2,3)')
subplot(2,2,4)
mesh(z),view(0,0),title('subplot(2,2,4)')
绘图结果如下:
figure,clf和cla
figure(h),传入一个整数h,创建一个新的窗口或者把窗口h作为当前窗口,接下来就绘制在当前窗口中,h称作窗口句柄。
clf清除当前窗口,并且重置坐标系的所有属性,例如hold状态和axis状态。
cla从当前坐标系中删除所有的图和文字,只留下x轴、y轴和它们的信息。