MATLAB繪圖功能

2021-06-02 17:00:29

圖形視窗的建立與控制,圖形視窗的基本操作;二維和三維繪圖基本的指令、著色、線型控制‘特殊圖形表現特殊資料的性質;座標軸的控制和圖形標註命令


1.圖形視窗的建立

  1. 指令建立:figure,兩種格式:figurefigure(n)

  2. 選單建立:File-New-Figure

  3. 注意:在MATLAB中無法畫出真正的連續函數

  1. 對離散區間進行更細的劃分,逐步趨近函數的連續變化特性,直到視覺上呈現連續的效果
  2. 把每兩個離散點用直線連續,以每兩個離散點之間的直線來近似表示兩點間函數特性

2.二維平面圖形與座標系

2.1.幾個基本的繪圖指令

2.1.1.線性座標曲線plot

plot 是 MATLAB 二維曲線繪圖中最簡單、最重要、使用最廣泛的一個線性繪圖函數。它可以生成線段、曲線和引數方程曲線的函數圖形

指令說明
plot(y)單引數式(y為縱座標向量,橫座標為向量[1 2 3 4 …])
plot(x,y)引數式 (x 為橫座標向量,y為縱座標向量)
plot(Y)m×n 矩陣式(矩陣的每列為縱座標,橫座標為向量[1:m])
plot(X,Y)混合式
plot(Z)復向量式
plot(x1,y1,x2,y2,…)綜合呼叫方式

2.1.2.plot(X,Y)注意事項

  1. 如果 X 和 Y 都是向量,則長度必須相等
  2. 如果 X 是向量,而 Y 是一個矩陣,X 的長度與矩陣 Y 的行數或列數相等,則它的作用是將向量 X 與矩陣 Y 的每列或每行的向量相對應作折( 曲)線,當 Y 是方陣時,則將向量 X 與矩陣 Y 的列向量對應作圖
  3. 如果 X 是矩陣,Y 是向量,Y 的長度等於矩陣 X 的行數或列數,則將 X 的每列或每行的向量與 Y 相對應作圖。當 X 是方陣時,則將 X 的各列與 Y 對應作圖
  4. 如果 X 和 Y 都是矩陣,且維數相同,則按列與列的對應方式來作圖。

peaks:MATLAB測試立體繪圖的快捷函數

2.1.3.plot(Z)繪圖


2.1.4.對數座標曲線命令

semilogx:橫座標為對數座標
semilogy:縱座標為對數座標
loglog:橫縱座標均為對數座標

clear all
clc
t=0.1:0.1:3*pi;    
y=sin(t)+1; 
figure(1)        %建立一個新的視窗
semilogx(t,y) 
grid on          %開啟網格
figure(2)
semilogy(t,y)
figure(3)
loglog(t,y)

2.1.5.雙y軸圖形

繪製左右均有y軸的圖形

plotyy(x1,y1,x2,y2):在視窗中同時繪製兩條曲線:(x1,y1)和(x2,y2),曲線(x1,y1)用左側的 y 軸,曲線(x2,y2)用右側的 y 軸
plotyy(x1,y1,x2,y2, 'fun'):'fun’是字串,用來指定繪圖的函數名,如 plot、semilogx、semilogy 等
plotyy(z1,y1,x2,y2, ‘fun1’, ‘fun2’):'fun1’和’fun2’指定不同的繪圖函數分別繪製

注意: plotyy 函數不能加入設定曲線線型、顏色及標出資料點的引數

2.2.線型和顏色

plot 函數可以設定曲線的線段型別、定點標記和線段顏色
在這裡插入圖片描述

呼叫格式

plot(x,y,s):s 為型別說明引數,是字串

  1. s 字串可以是三種型別的符號之一,也可以是線型與顏色和定點標記與顏色的組合
  2. 如果沒有 s 引數,plot 將使用預設設定(實線,前七種顏色順序著色)繪製曲線
  3. 在當前座標系中繪圖時,每呼叫一次繪圖函數,MATLAB將擦掉座標系中已有的圖形物件。可以用 hold on 命令在一個座標系中增加新的圖形物件

    注意: MATLAB會根據新圖形的大小,重新改變座標系的比例
clear all
clc
t1=0:0.1:2*pi; 
t2=0:0.1:6; 
y1=sin(t1);
y2=sqrt(t2); 
plot(t1,y1,':hb',t2,y2,'--g') 

2.3.圖形視窗的分割

subplot:實現在同一個視窗中同時顯示多個影象的命令

subplot(m,n,i):把圖形視窗分割為 m 行 n 列子視窗,然後選定第 i 個視窗為當前視窗

  1. subplot 命令不僅用於二維圖形,對三維圖形一樣適用
  2. 其本質是將 figure 視窗分為幾個區域,再在每個區域內分別繪圖
clear all
clc
%在第一個子視窗繪圖
subplot(2,2,1) 
t=0.1:0.1:2*pi; 
y=sin(t); 
semilogx(t,y) 
grid on  
%在第二個子視窗繪圖
subplot(2,2,2) 
t=0:0.1:4*pi; 
y=sin(t); 
plot(t,y)
%在第三個子視窗繪圖
subplot(2,2,3) 
x=1:0.01:5; y=exp(x); 
plotyy(x,y,x,y,'semilogx','plot')  
%在第四個子視窗繪圖
subplot(2,2,4) 
x=1:0.1:10; y=sqrt(x); 
plot(x,y,':rd')

2.4.座標系的調整

格式:axis([xmin,xmax,ymin,ymax,zmin,zmax])

座標的最小值( xmin,ymin,zmin)必須小於相應的最大值( xmax,ymax,zmax),否則會出錯

clear all
clc
%第一個圖,未調整座標系
subplot(2,1,1) 
t=0:0.1:4*pi; 
y=sin(t); 
plot(t,y)  
%第二個圖,調整座標系
subplot(2,1,2) 
t=0:0.1:4*pi; 
y=sin(t); 
plot(t,y) 
axis([0,max(t),min(y),max(y)]) 

3.三維繪圖

3.1.三維曲線繪圖指令

plot3:用來表現單引數的三維曲線

呼叫格式:plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,…)plot3(X,Y,Z,s)

  1. Xn、Yn、Zn:第一到三維資料,是尺寸相等的向量/矩陣
    1.1. X、Y、Z 是向量時,繪製以向量 X、Y、Z 的元素為 x、y、z 座標的三維曲線
    1.2.X、Y、Z 是矩陣時,以 X、Y、Z 對應列元素為 x、y、z 座標分別繪製曲線
  2. s、s1、s2:是字串,用來設定線型、顏色、資料點標記
clear all
clc
t = 0:pi/50:10*pi;
st = sin(t);
ct = cos(t); 
plot3(st,ct,t)

3.2.三維曲面繪圖指令

繪製定義在平面區域 D =[x0,xm]×[y0,yn ]上的三維曲面z=f(x,y)

[x0,xm]在 x 方向分成 m 份,將[y0,yn]在 y 方向分成 n 份,由各劃點分別作平行於座標軸的直線,將區域 D 分成 m×n 個小矩形;對於每個小矩形,計算出網格點的函數值,決定出空間中四個頂點( xi,yi,f(xi,yi)),連線四個頂點得到一個空間的四邊形片;所有四邊形片連在一起構成函數 z=f(x,y)定義在區域 D 上的空間網格曲面


三維曲面繪圖命令可分為平面網格點的生成在平面網格基礎上繪製三維網格對三維表面進行處理三個步驟

3.2.1.平面網格點的生成

meshgrid:生成 x-y 平面上的網格點矩陣( 將由兩個向量決定的區域轉換為對應的網格點矩陣)
生成size(y)*size(x)的矩陣,相當於x從一行重複增加到size(y)行,把y轉置成一列再重複增加到size(x)列

[X,Y]=meshgrid(x,y)[X,Y]=meshgrid(x)/[X,Y]=meshgrid(x,x)

  1. x:區間[x0,xm]上分劃的向量
  2. y:區間[y0,yn]上分劃的向量
  3. X,Y:輸出變數矩陣,矩陣 X 的行向量都是向量 x,矩陣 Y 的列向量都是向量 y
[X,Y] = meshgrid(-2:2:2, -2:2:2)
Z = X.*exp(-X.^2 - Y.^2)

3.2.2.三維網格命令mesh

mesh:生成網格曲面

呼叫格式

格式說明
mesh(X,Y,Z,C)X、Y、Z、C 是同維數的矩陣,X、Y、Z 對應空間上的網格點,格線顏色由C決定
mesh(X,Y,Z)相當於上面的 C=Z 的情況
mesh(x,y,Z,C)x 和 y 是向量,Z 和 C 是同維數的矩陣,網格曲面的網格頂點是( x(j),y(i),Z(i,j)),格線的顏色由矩陣 C 決定
mesh(x,y,Z)相當於上面的 C=Z 的情況
mesh(Z,C)等價於 mesh(x,y,Z,C),此時向量x=1:n,向量 y=1:m
mesh(Z)相當於上面的 C=Z 的情況
mesh(…,’PropertyName’,PropertyValue,…)給函mesh設定曲面屬性
clear all
clc
[X,Y] = meshgrid(-2:0.2:2, -2:0.2:2);
Z = X.*exp(-X.^2 - Y.^2);
mesh(Z)

x = -7:0.2:7;
y = -7:0.2:7;
[X,Y] = meshgrid(x);
z = sin(sqrt(X.^2 + Y.^2))./(sqrt(X.^2 + Y.^2));
subplot(2,1,1)
mesh(X,Y,z)

3.2.3.三維網格命令meshc、meshz

meshc:除生成網格曲面外,還在 x-y 平面上生成曲面的等高線圖形
meshz:除生成與 mesh 相同的網格曲面外,還在曲面下面加上一個長方體的臺柱

clear all
clc
[X,Y] = meshgrid(-2:0.1:2, -2:0.1:2);
Z = X.*exp(-X.^2 - Y.^2);
subplot(2,1,1) 
meshc(Z) 
subplot(2,1,2)
meshz(Z)

3.2.4.三維表面命令surf

surf:實現對網格曲面片進行著色,將網格曲面轉化為實曲面(surf 命令的呼叫格式與 mesh 相同)
shading interp:平滑處理

x = -7:0.2:7;
y = -7:0.2:7;
[X,Y] = meshgrid(x);
z = sin(sqrt(X.^2 + Y.^2))./(sqrt(X.^2 + Y.^2));
subplot(2,2,1)
mesh(X,Y,z)
subplot(2,2,2)
surf(z)
subplot(2,2,3)
surf(z)
shading interp

clear all
clc
x=-20:1:20;
y=-20:1:20;
[X,Y]=meshgrid(x,y);
z=-X.^2-Y.^2+100;
surf(X,Y,z)

3.2.5.等高線圖形的繪製

counter:繪製出二維圖形的等高線
contour3:繪製出三維圖形的等高線

指令說明
contour(Z)直接繪製矩陣 Z 的等高線
contour(X,Y,Z)用 X 和 Y 指定等高線的 x、y 座標
contour(Z,n)
contour(X,Y,Z,n)
繪製 n 條等高線
contour(Z,V)
contour(X,Y,Z,V)
向量 V 的元素指定等高線的位置,該向量長度 length(V)對應繪製的等高線條數

3.2.6.柱面和球面的三維表達

cylinder:柱面表示式(柱面的軸線定義為 z 軸,只要給出母線的描述就可完成一個柱面)

呼叫格式:

  1. [X,Y,Z] = cylinder(R,N)
  2. [X,Y,Z] = cylinder(R):預設值 N=20
  3. [X,Y,Z] = cylinder:預設值 N=20,R=[1,1]

    R:是一描述柱面母線的向量;
    N:是旋轉柱面上的分割線條數;
    [X,Y,Z] :是返回的x,y,z座標向量
clear all
clc
t=pi:0.01:3*pi; 
r=sin(t)+t; 
cylinder(r,30) 
shading interp   %平滑處理

sphere:球面的表示式

呼叫格式:

  1. [X,Y,Z]=sphere(N):產生一個( N+1)×( N+1)的矩陣,然後用函數 surf 命令繪製一個單位的球面,N 為設定分割線的條數
  2. [X,Y,Z] = sphere:預設值 N = 20

4.特殊圖形繪製

4.1.直方圖命令 bar

barbar3:直方圖常用於統計資料的作圖(兩指令呼叫格式類似)

呼叫格式:
1.bar(X,Y):X 是橫座標向量,Y 可以是向量或矩陣。Y 是向量時,每一個元素對應一個豎條;Y 是 m 行 n 列矩陣時,將畫出 m 組豎條,每組包括 n 個豎條
2. bar(Y):橫座標使用預設值 X=1:M
3.bar(X,Y,WIDTH)bar(Y,WIDTH):用 WIDTH 指定豎條的寬度,如果 WIDTH>1,條與條之間將重合。預設寬度為 0.8

clear all
clc
X=-2:2; 
Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];
 
subplot(1,2,1) 
bar(X,Y','r') 
xlabel('x')
ylabel('y') 

subplot(1,2,2) 
bar3(X,Y','y')
zlabel('y') 
ylabel('x')

4.2.餅圖命令 pie

piepie3:餅圖又叫扇形圖,用於顯示向量中元素所佔向量元素總和的百分比(兩指令呼叫格式類似)

呼叫格式:

  1. pie(X):向量 X 的餅圖。把 X 的每一個元素在所有元素總和中佔的比例表達出來
  2. pie(X,Y):向量Y(和向量X長度相等)用於指定餅圖中抽出一部分的塊(非零值對應的塊)
  3. pie(...,LABELS):LABELS 是用於標註餅圖的字串陣列細胞,其長度必須和向量 X相等
  4. H = pie(...):返回包括餅圖和文字物件控制程式碼
clear all
clc
x=[200,360,120,400,320];

subplot(2,2,1),
pie(x,[0 0 0 1 0]) 

subplot(2,2,2),
pie3(x,[0 0 0 1 0])

subplot(2,2,3),
pie(x(2:5)) 

subplot(2,2,4), 
x=[0.1,0.12,0.21,0.34,0.11];
pie3(x ,{'A','B','C','D','E'})

5.極座標系下繪製圖形

polar:直接在極座標系下繪圖的命令

polar(THETA, RHO,S):按照座標的角度theta,半徑rho繪製圖形,S 是字串,用來控制圖形的線型

clear all
clc
rhe=2; 
theta=0:pi/20:4*pi;
rho=rhe+theta*rhe;
polar(theta,rho,'r')

6.座標軸的調整和圖形的標註

6.1.座標軸調整命令

在這裡插入圖片描述

6.2.特徵字串中的希臘字母

在這裡插入圖片描述

6.3.特徵字串中的其他字元

在這裡插入圖片描述

6.4.圖例的標註

6.4.1.圖例的說明legend

legend:實現不同圖例的說明

呼叫格式:

  1. legend(string1,string2,string3, ...)legend(string1,string2,string3,...,’Location’,’Pos’):按順序把字串新增到相應的曲線線型符號之後
  2. Pos:NorthEast 圖窗右上角(預設)、NorthWest 圖窗左上角、SouthEast 圖窗右下角、SouthWest 圖窗左下角
clear all
clc
a=rand(10,10);
surf(a)
xlabel('x');
ylabel('y');
zlabel('z');
title('三維曲面')
legend('曲面','location','northwest')

6.4.2.控制分格線grid

grid on:開啟分格線控制開關,以後繪製的圖形都帶有分格線
grid off:關閉分格線控制開關,以後繪製的圖形都不帶分格線
grid:用於實現分格線繪製切換

6.4.3.標記函數text

text(x,y,'text'):圖形視窗的(x,y)處寫字串’text’

6.4.4.設定座標軸set

set(gca,’屬性’,value)

clear all
clc
x = linspace(0,10);
y = sin(4*x);
plot(x,y)
set(gca,'fontsize',16,'fontname','times New Roman');
set(gca,'ylim',[-2,2])
set(gca,'xlim',[1,5])

6.4.5.使用函數 xlabel、title 和 legend 命令進行標註

clear all
clc
t=0:0.1:4*pi; 
y=sin(t); 
y1=cos(t);
plot(t,y,':',t,y1,'r*') 
xlabel('x 軸  (0--4\pi)','fontsize',12,'fontweight','bold') 
ylabel('y 軸','fontsize',12,'fontweight','bold') 
title('繪製正弦波和餘弦波Pos=1','fontsize',10,'fontweight','bold','fontangle','italic') 
text(pi,0,'\leftarrowsin(\pi)=0') 
text(pi/2,0.9,['\uparrowsin(\pi/2)=',num2str(sin(pi/2))]) 
legend('正弦波','餘弦波')