在同一個坐標系中畫多個圖
至少有三種方法可以在同一個坐標系中畫多幅圖:
-
最簡單的辦法。
使用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會告訴你更多的選項。
坐標軸
當你使用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軸和它們的信息。