天天看點

【Matlab】二維繪圖總結

參考資料:

《Matlab程式設計及其應用第三講》——陸偉

《Matlab 幫助文檔》

文章目錄

    • 1. 基本繪圖函數:plot 函數。
    • 2. 功能:對 x x x 坐标及對應的 y y y 坐标繪圖。
    • 3. plot函數的使用格式:
    • 4. 該函數對 x x x和 y y y的形式有一定的要求,不符合要求會報錯,符合要求的形式見下表。
    • 5. 更改線條性質
      • (1)線型( L i n e S t y l e Line Style LineStyle )、點型( M a r k e r Marker Marker )和顔色( C o l o r Color Color)
      • (2)線寬( L i n e W i d t h LineWidth LineWidth)
      • 6. 加入說明文字
    • 7. 更改坐标軸性質
    • 8. 其他的一些函數
      • (1)hold 函數
      • (2)grid 函數
      • (3)plotyy 函數
      • (4)subplot 函數
      • (5)對複數進行繪圖
    • 8. 寫在最後

1. 基本繪圖函數:plot 函數。

2. 功能:對 x x x 坐标及對應的 y y y 坐标繪圖。

3. plot函數的使用格式:

plot(x, y, ...);
           

注:省略号部分可以補充圖形的性質,随後講解。

4. 該函數對 x x x和 y y y的形式有一定的要求,不符合要求會報錯,符合要求的形式見下表。

x x x可能的形式 y y y可能的形式 繪圖的效果
1 × n 1\times n 1×n 的矩陣 1 × n 1\times n 1×n 的矩陣 對 y y y繪圖
1 × n 1\times n 1×n 的矩陣 m × n m\times n m×n的矩陣 用 x x x與 y y y的每個行向量繪圖
m × n m\times n m×n的矩陣 m × n m\times n m×n的矩陣 用 x x x的每一個行向量與 y y y對應行向量繪圖

特殊使用形式:隻給出 y y y,不給出 x x x :

plot(y, ...);
           

這時,則會把 y y y的索引組成的矩陣當作 x x x進行繪圖。

5. 更改線條性質

(1)線型( L i n e S t y l e Line Style LineStyle )、點型( M a r k e r Marker Marker )和顔色( C o l o r Color Color)

先上例子:

clear; clc;
	close all;
	t = 0 : pi/10 : 2*pi;
	x = t - 3;
	y = sin(t);
	z = cos(t);
	plot(t, x, '-r'); hold on;
	plot(t, y, '--g');
	plot(t, z, '*b');
	%上面兩行也可以寫作一行: plot(t, x, '-r', t, y, '--g', t, z, '*b');
           

繪圖結果:

【Matlab】二維繪圖總結
  • 線型
plot 函數的 Line Style 說明
- 實線(預設值)
- - 虛線
: 點線
-. 點虛線
  • 點型
plot 函數的 Marker 說明
O 圓形
+ 加号
X 叉号
* 星号
. 點号
^ 朝上三角形
V 朝下三角形
  • 顔色
plot 函數的 Color 顔色效果 RGB值
b 藍色(Blue) (0,0,1)
c 青藍色(Cyan) (0,1,1)
g 綠色(Green) (0,1,0)
k 黑色(Black) (0,0,0)
m 紫黑色(Magenta) (1,0,1)
r 紅色(Red) (1,0,0)
w 白色(White) (1,1,1)
y 黃色(Yellow) (1,1,0)

修改線型、點型或顔色時,直接在 x , y x, y x,y後面添加(用逗号隔開)相應的标記(用單引号引起來)就可以了,下面給出一些例子:

%線型
	plot(x, y, '--k');
	plot(x, y, 'b:');
	plot(x, y, '-.c');
	%點型
	plot(x, y, 'Xm');
	plot(x, y, 'y*');
	plot(x, y, '+g');
	%同時設定線型和點型
	plot(x, y, '*-r');
	plot(x, y, '^--g');
           

注:顔色的标記和線(點)型的标記的位置可調換,誰在前面都是可以的。也可以同時設定線型和點型。

(2)線寬( L i n e W i d t h LineWidth LineWidth)

直接上例子:

%線寬預設是 0.5
	plot(x, y, '--r', 'LineWidth', 2);
	plot(x, y, '-.g', 'LineWidth', 0.3);
           

性質方面常用的就這些,如果想實作某些特殊需求,可以查閱Matlab幫助文檔。

6. 加入說明文字

為增強圖形的可讀性,常常需要對圖形或坐标軸加入說明性的文字。

指令 說明
title 圖形的标題
xlabel x x x 軸的說明
ylabel y y y 軸的說明
legend 标注圖例
text 圖形中加入文字
gtext 使用滑鼠定位文字位置

注:一般 l e g e n d legend legend 寫在最後,前面畫幾個圖, l e g e n d legend legend 中就添加幾項圖例。

例子:

clear; clc;
	close all;
	t = 0 : pi/10 : 2*pi;
	x = t - 3;
	y = sin(t);
	z = cos(t);
	plot(t, x, '-r', t, y, '--g', t, z, '*b');
	xlabel('t = 0 to 2\pi'); 
	ylabel('values of t - 3, sin(t) and cos(t)');
	title('Function Plots of t - 3, sin(t) and cos(t)');
	%在(3,3)處加上字型顔色為藍色的文本
	text(3, 3, '加的文本在這裡', 'Color', 'b');
	%這裡為了不遮擋圖形,将圖例的位置放在'northwest'處,也就是左上角,預設的是右上角
	legend({'t - 3', 'sin(t)','cos(t)'}, 'location', 'northwest');
	shg; %顯示圖像
           

繪圖結果:

【Matlab】二維繪圖總結

注:文本中可以使用 Latex 的文法。

7. 更改坐标軸性質

最常用的是

axis

指令,常用的功能列舉如下:

clear; clc;
	close all;
	t = 0 : pi/10 : 2*pi;
	y = sin(t);
	plot(t, y);
	x1 = 0;
	x2 = 6;
	y1 = -3;
	y2 = 3;
	axis([x1 x2 y1 y2]); %設定x軸範圍為 x1 到 x2, y軸範圍為 y1 到 y2;
	shg;pause(2);
	%其他一些比較常用的功能如下:
	axis xy; %xy-Default方向。對于2d視圖中的軸,y軸是垂直的,值從下到上遞增
	shg;pause(2);
	axis ij; %ij-Reverse方向。對于2d視圖中的坐标軸,y軸是垂直的,值從上到下遞增
	shg;pause(2);
	axis auto; %自動生成坐标軸範圍
	shg;pause(2);
	axis padded; %在圖和繪圖框之間填充邊距
	shg;pause(2);
	axis tight; %将坐标軸限制設定為與資料的範圍相等,以便繪圖延伸到坐标軸的邊緣
	shg;pause(2);
	axis equal; %将各坐标軸的機關長度設定為相等
	shg;pause(2);
	axis off; %隐藏坐标軸
	shg;pause(2);
	%注:上述的指令可以疊加,如下面的例子:
	axis equal tight;
           

8. 其他的一些函數

(1)hold 函數

這個函數在前面的例子中已經使用到了,它的功能是在已經畫了曲線的圖上再繼續添加曲線。

clear; clc;
	close all;
	t = 0 : pi/10 : 2*pi;
	x = t - 3;
	y = sin(t);
	plot(t, x);
	shg;
	
	%這裡如果不添加這個語句,那麼上面這個圖形會消失,即被下面這個圖形覆寫
	hold on;
	
	plot(t, y);
	shg;
	%如果想重新畫圖,不想再在原來的圖上添加圖形,使用hold off;
	hold off;
	z = cos(t);
	plot(t, z);
	shg;
           

(2)grid 函數

有時希望在圖形上加上網格,以便更好地觀察波形的變化,這時便可以使用

grid on

指令,如果想要關閉網格,再使用

grid off

指令即可。

例子:

clear; clc;
	close all;
	t = 0 : pi/10 : 2*pi;
	y = cos(t);
	plot(t, y);
	grid on; %顯示網格線
	shg;
	grid minor; %使用這個指令可以顯示主要和次要網格線
	shg;
	grid off; %關閉網格線
	shg;
           

(3)plotyy 函數

在同一視窗畫幅度相差很大的兩條曲線,采用不同的y軸刻度。

如:

x = 0:0.01:20;
	y1 = 200*exp(-0.05*x).*sin(x); %點乘是兩個矩陣中的每一個元素相乘
	y2 = 0.8*exp(-0.5*x).*sin(10*x);
	plotyy(x, y1, x, y2, 'plot');
           

産生的效果如下圖:

【Matlab】二維繪圖總結

(4)subplot 函數

使用指令

subplot(m, n, p)

可以将視窗分成 m × n m\times n m×n 個子視窗,下一個 plot 指令繪圖于第 p p p 個子視窗。 p p p 的計數方法為由左至右,從上到下進行計數,從1開始。

舉例如下:

x = 0:pi/30:2*pi;
	subplot(2, 2, 1); %左上角
	plot(x, sin(x));
	title('sin(x)');
	
	subplot(2, 2, 2); %右上角
	plot(x, cos(x));
	title('cos(x)');
	
	subplot(2, 2, 3); %左下角
	plot(x, exp(-x).*sin(3*x));
	title('e^{-x} \cdot sin(3*x)'); %這裡使用了Latex文法:\cdot(點乘)
	
	subplot(2, 2, 4); %右下角
	plot(x, x.^2);
	title('x^2');
           

産生的效果圖如下:

【Matlab】二維繪圖總結

注:使用

subplot()

時還可以組合子視窗,比如指令

subplot(2, 2, [1, 3])

就是将1号視窗和3号視窗組合起來,下一個

plot

指令就是在這個組合後的視窗進行繪圖,這裡就不再舉例子了。

(5)對複數進行繪圖

z是一個複數向量,那麼指令

plot(z)

便等價于

plot(real(z), imag(z))

,即将z的實部和虛部當成x坐标和y坐标來畫圖。

舉例如下:

theta = pi/2 : 2*pi/5 :(2*pi+pi/2);
	z = exp(j*theta);
	colordef black;//将背景色設定為黑色
	plot(z);
	
	%使橫縱坐标機關長度相等,同時設定橫縱坐标的範圍剛好等于資料的範圍
	axis equal tight;
	
	axis off;%隐藏坐标軸
           

最後的效果如下:

【Matlab】二維繪圖總結

8. 寫在最後

如果哪裡有錯誤歡迎指出,共同學習,共同進步!

如果有什麼問題,歡迎提問!

謝謝!

下一篇文章預告:【Matlab】三維繪圖總結
歡迎繼續關注

連結指路:

下一篇:【Matlab】三維繪圖總結

繼續閱讀