MATLAB04:基礎繪圖
學習一門技術最好的方式就是閱讀官方文檔,可以查看MATLAB官方文檔
圖線的繪製與裝飾
使用plot()
函數繪製圖線
在MATLAB中,使用plot()
函數繪製圖線,其語法爲:
plot(x,y,LineSpec)
各參數意義如下:
-
x
: 圖線上點的x座標 -
y
: 圖線上點的y座標 -
LineSpec
: 圖線的線條設定,三個指定線型,標記符號和顏色的設定符組成一個字符串,設定符不區分先後.具體細節請參考官方文檔.線型符號 線型設定符 標記 標記設定符 顏色 顏色設定符 -
實線(默認) o
圓圈 y
黃色 --
虛線 +
加號 m
品紅色 :
點線 *
星號 c
青藍色 -.
點劃線 .
點 r
紅色 x
叉號 g
綠色 s
方形 b
藍色 d
菱形 w
白色 ^
上三角 k
黑色 v
下三角 >
右三角 <
左三角 p
五角形 h
六角形
下面例子演示了繪製內餘弦函數的圖像:
x = 0:pi/20:2*pi;
y = cos(x);
plot(x, y, 'r.-')
裝飾圖線
-
使用
legend()
函數爲圖片增加圖例使用
legend(label1, ..., labelN)
函數可以爲圖片添加圖例.x=0:0.5:4*pi; y=sin(x); h=cos(x); w=1./(1+exp(-x)); g=(1/(2*pi*2)^0.5).*exp((-1.*(x-2*pi).^2)./(2*2^2)); plot(x,y,'bd-' ,x,h,'gp:',x,w,'ro-' ,x,g,'c^-'); % 繪製多條圖線 legend('sin(x)','cos(x)','Sigmoid','Gauss function'); % 添加圖例
-
使用
title()
和*label()
爲圖片增加標題和標籤x = 0:0.1:2*pi; y1 = sin(x); y2 = exp(-x); plot(x, y1, '--*', x, y2, ':o'); xlabel('t = 0 to 2\pi'); ylabel('values of sin(t) and e^{-x}') title('Function Plots of sin(t) and e^{-x}'); legend('sin(t)','e^{-x}');
-
使用
text()
和annotation()
爲圖片增加註解x = linspace(0,3); y = x.^2.*sin(x); plot(x,y); line([2,2],[0,2^2*sin(2)]); str = '$$ \int_{0}^{2} x^2\sin(x) dx $$'; text(0.25,2.5,str,'Interpreter','latex'); annotation('arrow','X',[0.32,0.5],'Y',[0.6,0.4]);
控制座標軸,邊框與網格
使用下列命令可以控制座標軸,邊框與網格.
命令 | 作用 |
---|---|
grid on/off |
設置網格可見性 |
box on/off |
設置邊框可見性 |
axis on/off |
設置座標軸可見性 |
axis normal |
還原默認行爲,將圖框縱橫比模式和數據縱橫比模式的屬性設置爲自動 |
axis square |
使用相同長度的座標軸線,相應調整數據單位之間的增量 |
axis equal |
沿每個座標軸使用相同的數據單位長度 |
axis tight |
將座標軸範圍設置爲等同於數據範圍,使軸框緊密圍繞數據 |
下面的例子演示axis
命令的效果:
t = 0:0.1:2*pi; x = 3*cos(t); y = sin(t);
subplot(2, 2, 1); plot(x, y); axis normal
subplot(2, 2, 2); plot(x, y); axis square
subplot(2, 2, 3); plot(x, y); axis equal
subplot(2, 2, 4); plot(x, y); axis equal tight
繪製多條圖線
在一個圖像上繪製多條圖線
默認情況下,每次執行plot()
函數都會清除上一次繪圖的結果,多次執行plot()
只會保留最後一次繪製的圖形.
plot(cos(0:pi/20:2*pi));
plot(sin(0:pi/20:2*pi));
我們可以使用hold on
和hold off
命令控制繪圖區域的刷新,使得多個繪圖結果同時保留在繪圖區域中.
hold on % 提起畫筆,開始繪製一組圖片
plot(cos(0:pi/20:2*pi));
plot(sin(0:pi/20:2*pi));
hold off % 放下畫筆,該組圖片繪製完畢
在一個窗口內繪製多個圖像
使用subplot()
函數可以在一個窗口內繪製多個圖像.其語法爲:
subplot(m,n,p)
該命令表示將當前圖窗劃分爲m
×n
個網格,並在第p
個網格內繪製圖像.
示例如下:
subplot(2,2,1);
x = linspace(-3.8,3.8);
y_cos = cos(x);
plot(x,y_cos);
title('Subplot 1: Cosine')
subplot(2,2,2);
y_poly = 1 - x.^2./2 + x.^4./24;
plot(x,y_poly,'g');
title('Subplot 2: Polynomial')
subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('Subplot 3 and 4: Both')
圖形對象的操作
在MATLAB中,圖形都是以對象的形式儲存在內存中,通過獲取其圖形句柄可以對其進行操作.
獲取圖形句柄
圖形句柄本質上就是一個浮點數,可以唯一確定一個圖形對象.下面幾個函數用於獲取圖形句柄.
Function | Purpose |
---|---|
gca() |
獲取當前座標軸的句柄 |
gcf() |
獲取當前圖像的句柄 |
allchild(handle_list) |
獲取該對象的所有子對象的句柄 |
ancestor(h,type) |
獲取對象最近的type 類型的祖先節點 |
delete(h) |
刪除某對象 |
findall(handle_list) |
獲取該對象的後代對象 |
所有繪圖函數也會返回圖形對象的句柄.
通過圖形句柄操作圖形屬性
使用get()
和set()
函數可以對圖形對象的屬性進行訪問和修改.訪問官方文檔可以查看所有圖形對象的屬性.
set(H,Name,Value)
v = get(h,propertyName)
下面兩個例子演示使用圖形句柄操作圖形對象:
-
改變座標軸屬性:
% 第一張圖 set(gca, 'FontSize', 25); % 第二張圖 set(gca, 'XTick', 0:pi/2:2*pi); set(gca, 'XTickLabel', 0:90:360); % 第三張圖 set(gca, 'FontName', 'symbol'); set(gca, 'XTickLabel', {'0', 'p/2', 'p', '3p/2', '2p'});
-
改變線型
h = plot(x,y); set(h, 'LineStyle','-.', ... 'LineWidth', 7.0, ... 'Color', 'g');
將圖形保存到文件
使用saveas(fig,filename)
命令可以將圖形對象保存到文件中,其中fig
爲圖形句柄,filname
爲文件名.
saveas(gcf, 'myfigure.png')
使用saveas()
函數將圖像保存成位圖時,會發生失真.要精確控制生成圖片的質量,可以使用print()
函數,見官方文檔