matlab繪圖

強大的繪圖功能是Matlab的特色之一,Matlab提供了一系列的繪圖函數,用戶不須要過多的考慮繪圖的細節,只須要給出一些基本參數就能獲得所需圖形,這類函數稱爲高層繪圖函數。此外,Matlab還提供了直接對圖形句柄進行操做的低層繪圖操做。這類操做將圖形的每一個圖形元素(如座標軸、曲線、文字等)看作一個獨立的對象,系統給每一個對象分配一個句柄,能夠經過句柄對該圖形元素進行操做,而不影響其餘部分。git

一.二維繪圖

 一.繪製二維曲線的基本函數

1. plot函數的基本用法

plot函數用於繪製二維平面上的線性座標曲線圖,要提供一組x座標和對應的y座標,能夠繪製分別以x和y爲橫、縱座標的二維曲線。plot函數的應用格式框架

plot(x,y)     其中x,y爲長度相同的向量,存儲x座標和y座標。ide

例:在[0 , 2pi]區間,繪製曲線函數

程序以下:在命令窗口中輸入如下命令  網站

1  x=0:pi/100:2*pi;
2 
3  y=2*exp(-0.5*x).*sin(2*pi*x);
4 
5  plot(x,y)

或者能夠本身創建m文件:ui

1 x=0:pi/100:2*pi;
2 y=2*exp(-0.5*x).*sin(2*pi*x);  %注意 exp以e爲底的指數。
3 plot(x,y)

程序執行後,打開一個圖形窗口,在其中繪製出以下曲線spa

  

例52 繪製曲線.net

這是以參數形式給出的曲線方程,只要給定參數向量,再分別求出x,y向量便可輸出曲線:3d

1 >> t=-pi:pi/100:pi;
2 
3 >> x=t.*cos(3*t);
4 
5 >> y=t.*sin(t).*sin(t);
6 
7 >> plot(x,y)

程序執行後,打開一個圖形窗口,在其中繪製出以下曲線code

 

以上提到plot函數的自變量x,y爲長度相同的向量,這是最多見、最基本的用法。實際應用中還有一些變化。

2.含多個輸入參數的plot函數

plot函數能夠包含若干組向量對,每一組能夠繪製出一條曲線。含多個輸入參數的plot函數調用格式爲:plot(x1,y1,x2,y2,…,xn,yn)

以下列命令能夠在同一座標中畫出3條曲線。

1 >> x=linspace(0,2*pi,100); %0到2*pi,一共一百步
2 
3 >> plot(x,sin(x),x,2*sin(x),x,3*sin(x))

 

當輸入參數有矩陣形式時,配對的x,y按對應的列元素爲橫座標和縱座標繪製曲線,曲線條數等於矩陣的列數。 

 1 >> x=linspace(0,2*pi,100);
 2 
 3 >> y1=sin(x);
 4 
 5 >> y2=2*sin(x);
 6 
 7 >> y3=3*sin(x);
 8 
 9 >> x=[x;x;x]';
10 
11 >> y=[y1;y2;y3]';
12 
13 >> plot(x,y,x,cos(x))

x,y都是含有三列的矩陣,它們組成輸入參數對,繪製三條曲線;x和cos(x)又組成一對,繪製一條餘弦曲線。

利用plot函數能夠直接將矩陣的數據繪製在圖形窗體中,此時plot函數將矩陣的每一列數據做爲一條曲線繪製在窗體中。如

>> A=pascal(5)

A =

     1     1     1     1     1

     1     2     3     4     5

     1      3     6    10    15

     1     4    10    20    35

     1     5    15    35    70

>> plot(A)

 

3. 含選項的plot函數

Matlab提供了一些繪圖選項,用於肯定所繪曲線的線型、顏色和數據點標記符號。這些選項如表所示:

線型

顏色

標記符號

- 實線

b藍色

.   點

s 方塊

: 虛線

g綠色

o 圓圈

d 菱形

-. 點劃線

r紅色

× 叉號

∨朝下三角符號

-- 雙劃線

c青色

+ 加號

∧朝上三角符號

 

m品紅

* 星號

<朝左三角符號

 

y黃色

 

>朝右三角符號

 

k黑色

 

p 五角星

 

w白色

 

h 六角星

 

例 用不一樣的線型和顏色在同一座標內繪製曲線 及其包絡線。

 1 >> x=(0:pi/100:2*pi)';   %注意紅點
 2 
 3 >> y1=2*exp(-0.5*x)*[1,-1];
 4 
 5 >> y2=2*exp(-0.5*x).*sin(2*pi*x);
 6 
 7 >> x1=(0:12)/2;
 8 
 9 >> y3=2*exp(-0.5*x1).*sin(2*pi*x1);
10 
11 >> plot(x,y1,'k:',x,y2,'b--',x1,y3,'rp'); 

在該plot函數中包含了3組繪圖參數,第一組用黑色虛線畫出兩條包絡線,第二組用藍色雙劃線畫出曲線y,第三組用紅色五角星離散標出數據點。

4. 雙縱座標函數plotyy

在Matlab中,若是須要繪製出具備不一樣縱座標標度的兩個圖形,可使用plotyy函數,它能把具備不一樣量綱,不一樣數量級的兩個函數繪製在同一個座標中,有利於圖形數據的對比分析。使用格式爲:plotyy(x1,y1,x2,y2)

x1,y1對應一條曲線,x2,y2對應另外一條曲線。橫座標的標度相同,縱座標有兩個,左邊的對應x1,y1數據對,右邊的對應x2,y2。

二.繪製圖形的輔助操做

繪製完圖形之後,可能還須要對圖形進行一些輔助操做,以使圖形意義更加明確,可讀性更強。

1. 圖形標註

在繪製圖形時,能夠對圖形加上一些說明,如圖形的名稱、座標軸說明以及圖形某一部分的含義等,這些操做稱爲添加圖形標註。有關圖形標註函數的調用格式爲:

  • title(’圖形名稱’) (都放在單引號內)
  • xlabel(’x軸說明’)
  • ylabel(’y軸說明’)
  • text(x,y,’圖形說明’)
  • legend(’圖例1’,’圖例2’,…) P190

其中,title、xlabel和ylabel函數分別用於說明圖形和座標軸的名稱。text函數是在座標點(x,y)處添加圖形說明。(P88 或用gtext命令)。legend函數用於繪製曲線所用線型、顏色或數據點標記圖例,圖例放置在空白處,用戶還能夠經過鼠標移動圖例,將其放到所但願的位置。除legend函數外,其餘函數一樣適用於三維圖形,在三維中z座標軸說明用zlabel函數。

上述函數中的說明文字,除了使用標準的ASCII字符外,還可使用LaTex(一種流行的數學排版軟件)格式的控制字符,這樣就能夠在圖形上添加希臘字符,數學符號和公式等內容。在Matlab支持的LaTex字符串中,用/bf , /it , /rm控制字符分別定義黑體、斜體和正體字符,受LaTex字符串控制部分要加大括號{}括起來。例如,text(0.3,0.5,’the usful {/bf MATLAB}’),將使MATLAB一詞黑體顯示。一些經常使用的LaTex字符見表,各個字符能夠單獨使用也能夠和其餘字符及命令配合使用。如text(0.3 ,0.5 ,’sin({/omega}t+{/beta})’)

將獲得標註效果 。

標識符

符號

標識符

符號

標識符

符號

/alpha

 

/epsilon

 

/infty

 

/beta

 

/eta

 

/int

 

/gamma

 

/Gamma

 

/partial

 

/delta

 

/Delta

 

/leftarrow

 

/theta

 

/Theta

 

/rightarrow

 

/lambda

 

/Lambda

 

/downarrow

 

/xi

 

/Xi

 

/uparrow

 

/pi

 

/Pi

 

/div

 

/omega

 

/Omega

 

/times

 

/sigma

 

/Sigma

 

/pm

 

/phi

 

/Phi

 

/leq

 

/psi

 

/Psi

 

/geq

 

/rho

 

/tau

 

/neq

 

/mu

 

/zeta

 

/forall

 

/nu

 

/chi

 

/exists

 

2. 座標控制

在繪製圖形時,Matlab能夠自動根據要繪製曲線數據的範圍選擇合適的座標刻度,使得曲線可以儘量清晰的顯示出來。因此,通常狀況下用戶沒必要選擇座標軸的刻度範圍。可是,若是用戶對座標不滿意,能夠利用axis函數對其從新設定。其調用格式爲

axis([xmin xmax ymin ymax zmin zmax])

若是隻給出前四個參數,則按照給出的x、y軸的最小值和最大值選擇座標系範圍,繪製出合適的二維曲線。若是給出了所有參數,則繪製出三維圖形。

axis函數的功能豐富,其經常使用的用法有:

axis equal :縱橫座標軸採用等長刻度

axis square:產生正方形座標系(默認爲矩形)

axis auto:使用默認設置

axis off:取消座標軸

axis on :顯示座標軸

還有:給座標加網格線能夠用grid命令來控制,grid on/off命令控制畫仍是不畫網格線,不帶參數的grid命令在兩種之間進行切換。

給座標加邊框用box命令控制。和grid同樣用法

3. 圖形保持

通常狀況下,每執行一次繪圖命令,就刷新一次當前圖形窗口,圖形窗口原有圖形將不復存在,若是但願在已經存在的圖形上再繼續添加新的圖形,可使用圖形保持命令hold。hold on/off 命令是保持原有圖形仍是刷新原有圖形,不帶參數的hold命令在二者之間進行切換。

4. 圖形窗口分割

在實際應用中,常常須要在一個圖形窗口中繪製若干個獨立的圖形,這就須要對圖形窗口進行分割。分割後的圖形窗口由若干個繪圖區組成,每個繪圖區能夠創建獨立的座標系並繪製圖形。同一圖形窗口下的不一樣圖形稱爲子圖。Matlab提供了subplot函數用來將當前窗口分割成若干個繪圖區,每一個區域表明一個獨立的子圖,也是一個獨立的座標系,能夠經過subplot函數激活某一區,該區爲活動區,所發出的繪圖命令都是做用於該活動區域。調用格式:

subplot(m,n,p)

該函數把當前窗口分紅m×n個繪圖區,m行,每行n個繪圖區,區號按行優先編號。其中第p個區爲當前活動區。每個繪圖區容許以不一樣的座標系單獨繪製圖形。

三.繪製二維圖形的其餘函數

1. 其餘形式的線性直角座標圖

在線性直角座標中,其餘形式的圖形有條形圖、階梯圖、杆圖和填充圖等,所採用的函數分別爲:

  • bar(x,y,選項)      選項在單引號中
  • stairs(x,y,選項)
  • stem(x,y,選項)
  • fill(x1,y1,選項1,x2,y2,選項2,…)

前三個函數和plot的用法類似,只是沒有多輸入變量形式。fill函數按向量元素下標漸增次序依次用直線段鏈接x,y對應元素定義的數據點。

例5-8:分別以條形圖、填充圖、階梯圖和杆圖形式繪製曲線

 1 x=0:0.35:7;
 2 
 3 y=2*exp(-0.5*x);
 4 
 5 subplot(2,2,1);bar(x,y,'g');
 6 
 7 title('bar(x,y,''g'')');axis([0, 7, 0 ,2]);
 8 
 9 subplot(2,2,2);fill(x,y,'r');
10 
11 title('fill(x,y,''r'')');axis([0, 7, 0 ,2]);
12 
13 subplot(2,2,3);stairs(x,y,'b');
14 
15 title('stairs(x,y,''b'')');axis([0, 7, 0 ,2]);
16 
17 subplot(2,2,4);stem(x,y,'k');
18 
19 title('stem(x,y,''k'')');axis([0, 7, 0 ,2]);

2. 極座標圖

polar函數用來繪製極座標圖,調用格式爲:

polar(theta,rho,選項)

其中,theta爲極座標極角,rho爲極徑,選項的內容和plot函數類似。

例5-9:繪製 的極座標圖 

1 theta=0:0.01:2*pi;
2 
3 rho=sin(3*theta).*cos(5*theta);
4 
5 polar(theta,rho,'r');

3. 對數座標圖

在實際應用中,常常用到對數座標,Matlab提供了繪製對數和半對數座標曲線的函數,其調用格式爲:

  • semilogx(x1,y1,選項1,x2,y2,選項2,…)
  • semilogy(x1,y1,選項1,x2,y2,選項2,…)
  • loglog(x1,y1,選項1,x2,y2,選項2,…)

這些函數中選項的定義和plot函數徹底同樣,所不一樣的是座標軸的選取。semilogx函數使用半對數座標,x軸爲經常使用對數刻度,而y軸仍保持線性刻度。semilogy剛好和semilogx相反。loglog函數使用全對數座標,x、y軸均採用對數刻度。

二. 三維繪圖

一.繪製三維曲線的基本函數

最基本的三維圖形函數爲plot3,它將二維繪圖函數plot的有關功能擴展到三維空間,能夠用來繪製三維曲線。其調用格式爲:

plot3(x1,y1,z1,選項1,x2,y2,z2,選項2,…)

其中每一組x,y,z組成一組曲線的座標參數,選項的定義和plot的選項同樣。當x,y,z是同維向量時,則x,y,z對應元素構成一條三維曲線。當x,y,z是同維矩陣時,則以x,y,z對應列元素繪製三維曲線,曲線條數等於矩陣的列數。

例513 繪製空間曲線,該曲線對應的參數方程爲

 1 t=0:pi/50:2*pi;
 2 
 3 x=8*cos(t);
 4 
 5 y=4*sqrt(2)*sin(t);
 6 
 7 z=-4*sqrt(2)*sin(t);
 8 
 9 plot3(x,y,z,'p');
10 
11 title('Line in 3-D Space');
12 
13 text(0,0,0,'origin');
14 
15 xlabel('X');ylabel('Y');zlabel('Z');grid;

 

二.三維曲面

1.平面網格座標矩陣的生成

當繪製z=f(x,y)所表明的三維曲面圖時,先要在xy平面選定一矩形區域,假定矩形區域爲D=[a,b]×[c,d],而後將[a,b]在x方向分紅m份,將[c,d]在y方向分紅n份,由各劃分點作平行軸的直線,把區域D分紅m×n個小矩形。生成表明每個小矩形頂點座標的平面網格座標矩陣,最後利用有關函數繪圖。

產平生面區域內的網格座標矩陣有兩種方法:

利用矩陣運算生成。

1 x=a:dx:b;
2 
3 y=(c:dy:d)’;
4 
5 X=ones(size(y))*x;
6 
7 Y=y*ones(size(x));

通過上述語句執行後,矩陣X的每一行都是向量x,行數等於向量y的元素個數,矩陣Y的每一列都是向量y,列數等於向量x的元素個數。

利用meshgrid函數生成;

1 x=a:dx:b;
2 
3 y=c:dy:d;
4 
5 [X,Y]=meshgrid(x,y);

語句執行後,所獲得的網格座標矩陣和上法,相同,當x=y時,能夠寫成meshgrid(x)

2.繪製三維曲面的函數

Matlab提供了mesh函數和surf函數來繪製三維曲面圖。mesh函數用來繪製三維網格圖,而surf用來繪製三維曲面圖,各線條之間的補面用顏色填充。其調用格式爲:

  • mesh(x,y,z,c)
  • surf(x,y,z,c)

通常狀況下,x,y,z是維數相同的矩陣,x,y是網格座標矩陣,z是網格點上的高度矩陣,c用於指定在不一樣高度下的顏色範圍。c省略時,Matlab認爲c=z,也即顏色的設定是正比於圖形的高度的。這樣就能夠獲得井井有條的三維圖形。當x,y省略時,把z矩陣的列下標看成x軸的座標,把z矩陣的行下標看成y軸的座標,而後繪製三維圖形。當x,y是向量時,要求x的長度必須等於z矩陣的列,y的長度必須等於必須等於z的行,x,y向量元素的組合構成網格點的x,y座標,z座標則取自z矩陣,而後繪製三維曲線。

例:用三維曲面圖表現函數 :

爲了便於分析三維曲面的各類特徵,下面畫出3種不一樣形式的曲面。

 1 %program 1
 2 
 3 x=0:0.1:2*pi;
 4 
 5 [x,y]=meshgrid(x);
 6 
 7 z=sin(y).*cos(x);
 8 
 9 mesh(x,y,z);
10 
11 xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
12 
13 title('mesh'); pause;
14 
15 %program 2
16 
17 x=0:0.1:2*pi;
18 
19 [x,y]=meshgrid(x);
20 
21 z=sin(y).*cos(x);
22 
23 surf(x,y,z);
24 
25 xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
26 
27 title('surf'); pause;
28 
29 %program 3
30 
31 x=0:0.1:2*pi;
32 
33 [x,y]=meshgrid(x);
34 
35 z=sin(y).*cos(x);
36 
37 plot3(x,y,z);
38 
39 xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis');
40 
41 title('plot3-1');grid;

 

 程序執行結果分別如上圖所示。從圖中能夠發現,網格圖(mesh)中線條有顏色,線條間補面無顏色。曲面圖(surf)的線條都是黑色的,線條間補面有顏色。進一步觀察,曲面圖補面顏色和網格圖線條顏色都是沿z軸變化的。用plot3 繪製的三維曲面實際上由三維曲線組合而成。能夠分析plot(x’,y’,z’)所繪製的曲面的特徵。

例 繪製兩個直徑相等的圓管相交的圖形。

 1 m=30;
 2 
 3 z=1.2*(0:m)/m;
 4 
 5 r=ones(size(z));
 6 
 7 theta=(0:m)/m*2*pi;
 8 
 9 x1=r'*cos(theta);y1=r'*sin(theta);%生成第一個圓管的座標矩陣
10 
11 z1=z'*ones(1,m+1);
12 
13 x=(-m:2:m)/m;
14 
15 x2=x'*ones(1,m+1);y2=r'*cos(theta);%生成第一個圓管的座標矩陣
16 
17 z2=r'*sin(theta);
18 
19 surf(x1,y1,z1);          %繪製豎立的圓管
20 
21 axis equal ,axis off
22 
23 hold on
24 
25 surf(x2,y2,z2);          %繪製平放的圓管
26 
27 axis equal ,axis off
28 
29 title ('兩個等直徑圓管的交線');
30 
31 hold off

 

 

例: 在xy平面內選擇[-8, 8]×[-8, 8]繪製函數,

 1 [x,y]=meshgrid(-8:0.5:8);
 2 
 3 z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);
 4 
 5 subplot(2,2,1);
 6 
 7 meshc(x,y,z);
 8 
 9 title('meshc');
10 
11 subplot(2,2,2);
12 
13 meshz(x,y,z);
14 
15 title('meshz');
16 
17 subplot(2,2,3);
18 
19 surfc(x,y,z);
20 
21 title('surfc');
22 
23 subplot(2,2,4);
24 
25 surfl(x,y,z);
26 
27 title('surfl');
View Code

3.標準三維曲面

Matlab提供了一些函數用於繪製標準三維曲面,這些函數能夠產生相應的繪圖數據,經常使用於三維圖形的演示。如,sphere函數和cylinder函數分別用於繪製三維球面和柱面。sphere函數的調用格式爲:

[x,y,z]=sphere(n);

該函數將產生(n+1)×(n+1矩陣x,y,z 。採用這三個矩陣能夠繪製出圓心位於原點、半徑爲1的單位球體。若在調用該函數時不帶輸出參數,則直接繪製所需球面。n決定了球面的圓滑程度,其默認值爲20。若n值取的比較小,則繪製出多面體的表面圖。

cylinder函數的調用格式爲:

[x,y,z]=cylinder(R,n)

其中R是一個向量,存放柱面各個等間隔高度上的半徑,n表示在圓柱圓周上有n個間隔點,默認有20個間隔點。如:cylinder(3)生成一個圓柱,cylinder([10,1])生成一個圓錐。而t=0:pi/100:4*pi; R=sin(t); cylinder(R,30);生成一個正弦圓柱面。 

例519 繪製標準三維曲面圖形

 1 t=0:pi/20:2*pi;
 2 
 3 [x,y,z]=cylinder(2+sin(t),30);
 4 
 5 subplot(1,3,1);
 6 
 7 surf(x,y,z);
 8 
 9 subplot(1,3,2);
10 
11 [x,y,z]=sphere;
12 
13 surf(x,y,z);
14 
15 subplot(1,3,3);
16 
17 [x,y,z]=peaks(30);
18 
19 meshz(x,y,z);

 

3.其餘三維圖形。

在介紹二維圖形時,曾經提到條形圖、杆圖、餅圖和填充圖等特殊圖形,它們還能夠以三維形式出現,其函數分別爲bar3,stem3,pie3和fill3。

bar3繪製三維條形圖,經常使用格式爲:

  • bar3(y);
  • bar3(x,y)

在第一種格式中,y的每一個元素對應於一個條形。第二種格式在x指定的位置上繪製y中元素的條形圖。

stem3函數繪製離散序列數據的三維杆圖,經常使用格式爲:

  • stem3(z)
  • stem3(x,y,z)

第一種格式將數據序列z表示爲從xy平面向上延伸的杆圖,x和y自動生成。第二種格式在x和y指定的位置上繪製數據序列z的杆圖,x,y,z的維數要相同。

pie3函數繪製三維餅圖,經常使用格式爲:

pie3(x)    x爲向量,用x中的數據繪製一個三維餅圖。

fill3函數可在三維空間內繪製出填充過的多邊形,經常使用格式爲:

fill3(x,y,z,c)   用x,y,z作多邊形的頂點,而c指定了填充的顏色。

例 繪製三維圖形。

1繪製魔方陣的三維條形圖2以三維杆圖形式繪製曲線y=2sinx 3已知x =[2347,1827,2043,3025] ,繪製三維餅圖     4用隨機的頂點座標值畫出5個黃色三角形

 1 subplot(2,2,1);
 2 
 3 bar3(magic(4));
 4 
 5 subplot(2,2,2);
 6 
 7 y=2*sin(0:pi/10:2*pi);
 8 
 9 stem3(y);
10 
11 subplot(2,2,3);
12 
13 pie3([2347,1827,2043,3025]);
14 
15 subplot(2,2,4);
16 
17 fill3(rand(3,5),rand(3,5),rand(3,5),'y');

除了上面討論的三維圖形外,經常使用的圖形還有瀑布圖和三維曲面的等高線圖。繪製瀑布圖用waterfall函數,用法和meshz函數類似,只是它的網格線在x軸方向出現,具備瀑布效果。等高線圖分二維和三維兩種形式,分別使用函數contour和contour3繪製。

例 繪製多峯函數的瀑布圖和等高線圖。 

 1 subplot(1,2,1);
 2 
 3 [X,Y,Z]=peaks(30);
 4 
 5 waterfall(X,Y,Z);
 6 
 7 xlabel('XX');ylabel('YY');zlabel('ZZ');
 8 
 9 subplot(1,2,2);
10 
11 contour3(X,Y,Z,12,'k');%其中12表明高度的等級數
12 
13 xlabel('XX');ylabel('YY');zlabel('ZZ');

 

三.三維圖形的精細處理

一.視點處理

在平常生活中,從不一樣的角度觀察物體,所看到的物體形狀是不同的。一樣,從不一樣視點繪製的三維圖形的形狀也是不同的。視點位置可由方位角和仰角表示。

方位角,Matlab提供了設置視點的函數view,其調用格式爲:

view(az,el)

其中az爲方位角,el爲仰角,它們均以度爲單位。系統默認的視點定義爲方位角爲-37.5度,仰角30度。

例 從不一樣視點繪製多峯函數曲面。

 1  
 2 
 3 subplot(2,2,1);mesh(peaks);
 4 
 5 view(-37.5,30);
 6 
 7 title('1');
 8 
 9 subplot(2,2,2);mesh(peaks);
10 
11 view(0,90);
12 
13 title('2');
14 
15 subplot(2,2,3);mesh(peaks);
16 
17 view(90,0);
18 
19 title('3');
20 
21 subplot(2,2,4);mesh(peaks);
22 
23 view(-7,-10);
24 
25 title('4');

二.圖形的裁剪處理

Matlab定義的NaN常數能夠用於表示那些不可以使用的數據,利用這些特性,能夠將圖形中須要裁剪部分對應的函數值設置成NaN,這樣在繪製圖形時,函數值爲NaN的部分將不顯示出來,從而達到對圖形進行裁剪的目的。例如,要削掉正弦波頂部或底部大於0.5的部分,可以使用下面的程序。

1 x=0:pi/10:4*pi;
2 
3 y=sin(x);
4 
5 i=find(abs(y)>0.5);
6 
7 x(i)=NaN;
8 
9 plot(x,y);

例524 繪製兩個球面,其中一個在另外一個裏面,將外面的球裁掉一部分,以便能看到裏面的球。

 1 [x,y,z]=sphere(25);
 2 
 3 %生成外面的大球
 4 
 5 z1=z;
 6 
 7 z1(:,1:4)=NaN;%將大球裁去一部分
 8 
 9 c1=ones(size(z1));
10 
11 surf(3*x,3*y,3*z1,c1);       %生成裏面的小球
12 
13 hold on
14 
15 z2=z;
16 
17 c2=2*ones(size(z2));
18 
19 c2(:,1:4)=3*ones(size(c2(:,1:4)));
20 
21 surf(1.5*x,1.5*y,1.5*z2,c2);
22 
23 colormap([0 1 0;0.5 0 0;1 0 0]);
24 
25 grid on
26 
27 hold off

 

色圖中使用三種顏色,外面的球是綠色,裏面的球採用深淺不一樣的兩種紅色。

四.隱函數做圖

若是給定了函數的顯式表達式,能夠先設置自變量向量,而後根據表達式計算函數向量,從而用plot等函數繪製出圖形。可是當函數採用隱函數形式時,如: ,則很難利用上述方法繪製圖形。Matlab提供了一個ezplot函數繪製隱函數圖形。用法以下:

①     對於函數f=f(x),ezplot的調用格式爲:

  • ezplot(f),在默認區間(-2pi,2pi)繪製圖形。
  • ezplot(f,[a,b]),在區間(a,b)繪製

②     對於隱函數f=f(x,y),ezplot的調用格式爲;

  • ezplot(f),在默認區間(-2pi,2pi),(-2pi,2pi)繪製f(x,y)=0的圖形。
  • ezplot(f,[xmin,xmax,ymin,ymax]);在區間          繪製圖形。
  • ezplot(f,[a,b]),在區間(a,b),(a,b)繪製

③     對於參數方程x=x(t),y=y(t),ezplot函數的調用格式爲:

  • ezplot(x,y),在默認區間 繪製x=x(t),y=y(t)圖形。
  • ezplot(x,y,[tmin,tmax]),在區間(tmin,tmax)繪製x=x(t),y=y(t)圖形。

例 隱函數繪圖舉例。 

 1 subplot(2,2,1);
 2 
 3 ezplot('x^2+y^2-9');axis equal;
 4 
 5 subplot(2,2,2);
 6 
 7 ezplot('x^3+y^3-5*x*y+1/5')
 8 
 9 subplot(2,2,3);
10 
11 ezplot('cos(tan(pi*x))',[0,1]);
12 
13 subplot(2,2,4);
14 
15 ezplot('8*cos(t)','4*sqrt(2)*sin(t)',[0,2*pi]);

其餘隱函數繪圖還有,ezpolar,ezcontour,ezplot3,ezmesh,ezmeshc,ezsurf,ezsurfc。

經常使用三角函數總結:

  • sin(x)       正弦函數
  • cos(x)       餘弦函數
  • tan(x)       正切函數
  • asin(x)      反正弦函數
  • acos(x)      反餘弦函數
  • atan(x)      反正切函數
  • atan2(x,y)   四象限的反正切函數
  • sinh(x)      雙曲正弦函數
  • cosh(x)      雙曲餘弦函數
  • tanh(x)      雙曲正切函數
  • asinh(x)     反雙曲正弦函數
  • acosh(x)     反雙曲餘弦函數
  • atanh(x)     反雙曲正切函數

5、地圖

matlab能夠繪製地圖,但仍是推薦argcis(專業繪製),或者Tableau(導入地理數據,可直接生成地圖座標繪圖)。

 1 %% 
 2 clear;clc;close all
 3 maps %查看當前可用的地圖投影方式
 4 
 5 %%  導入數據,全球海岸線
 6 load coast
 7 
 8 %% 繪圖
 9 axesm robinson
10 patchm(lat,long,'g');
11  %% 設置屬性
12 setm(gca);%查看當前能夠設置的全部圖形座標軸(map axes)的屬性
13 setm(gca,'Frame','on');%使框架可見
14 getm(gca,'Frame');%使用getm能夠獲取指定的圖形座標軸的屬性
15 setm(gca,'Grid','on');%打開網格
16 setm(gca,'MLabelLocation',60);%標上經度刻度標籤,每隔60度
17 setm(gca,'MeridianLabel','on');%設置經度刻度標籤可見
18 setm(gca,'PLabelLocation',[-90:30:90])%標上經度刻度標籤,[-90:30:90]
19 setm(gca,'ParallelLabel','on');%設置經度刻度標籤可見
20 setm(gca,'MLabelParallel','south');%將經度刻度標籤放在南方,即下部  
21 setm(gca,'Origin',[0,90,0]);%設置地圖的中心位置和繞中心點和地心點的軸旋轉角度[latitude longitude orientation]
22 setm(gca,'PLabelMeridian',90);%將緯度標籤放置在經度爲90度的地方

繪製的圖像以下:

5、其餘特殊圖形

一.面積圖

面積圖在實際中能夠表現不一樣部分對總體的影響,在MATLAB中,繪製面積圖的命令是area,它的使用格式以下:

調用格式                                                   說明

area(x)                                                與plot(x)命令同樣,可是將所得曲線下方的區域填充顏色

area(x,y)                                             其中y爲向量,與plot(x,y)同樣,但將所得曲線下方的區域填充顏色

area(x,A)                                            矩陣A的第一行對向量x繪圖,而後依次是下一行與前面全部行值的和對向量x繪圖,每一個區域有各自的顏色

area(...,level)                                     將填色部分改成由連線圖到y = level的水平線之間的部分

例:利用矩陣,繪製面積圖。

1 >> close all
2 >> Y = [1 5 3; 3 2 7; 2 4 8; 2 6 1];
3 >> area(Y)
4 >> grid on
5 >> colormap summer
6 >> set(gca, 'layer', 'top')%把座標軸顯示到頂層
7 >> title('面積圖')

2、餅圖

餅圖用來顯示向量或矩陣中各元素所佔的比例,它能夠用在一些統計數據可視化中。在二維狀況下,建立餅圖的命令是pie,三維狀況下建立餅圖的命令是pie3。兩者的使用格式也很是類似,所以咱們只介紹pie的使用格式

調用格式                                             說明

pie(X)                                           用X中的數據畫一餅形圖,X中的每一元素表明餅形圖中的一部分,X中元素X(i)所表明的扇形大小經過X(i)/sum(X)

                                                      的大小來決定。 若sum(X) = 1,則sum(X) = 1,則X中元素就直接指定了所在部分的大小;若sum(X) < 1,則畫出一不

                                                     完整的餅形圖

pie(X, explode)                          從餅形圖中分離出一部分。explode爲一與X同維的矩陣。當全部元素爲零時,餅圖的各個部分將連在一塊兒組成一個

                                                     圓,而其中存在非零元時,X中相對應的元素在餅圖中對應的扇形將向外移出一些來加以突出

h = pie(...)                                    返回一patch與text的圖形對象句柄向量h

 

例:某企業四個季度的盈利額分別爲528萬元、701萬元、658萬元和780萬元,試用餅圖給出各個季度所佔盈利總額的比例。

1 >> X = [528 701 658 780];
2 >> subplot(1,2,1)
3 >> pie(X)
4 >> title('二維餅圖')
5 >> subplot(1,2,2)
6 >> explode = [0 0 0 1];
7 >> pie3(X, explode)
8 >> title('三維分離餅圖')

運行結果以下:

3、柱狀圖

柱狀圖是數據分析中用得較多的一種圖形,例如在一些預測彩票結果的網站,把各期中獎數字記錄下來,而後作成柱狀圖,可讓彩民清楚地瞭解到各個數字在中獎號碼中出現 的概率。在MATLAB中,繪製柱狀圖的命令有兩個,一個hist命令,用來繪製直角座標下的柱狀圖;另外一個是rose命令,用業繪製極座標系下的柱狀圖。

hist的命令的使用格式以下:

調用格式                                                     說明 

n = hist(Y)                                              把向量Y中的數據分放到等距的10個柱狀圖中,且返回每個柱狀圖中的元素個數,若Y爲矩陣,則該命令

                                                                按列對Y進行處理

n = hist(Y,x)                                           參量x爲向量,把Y中元素放到m(m = length(x))個由x中元素指定的位置爲中心的柱狀圖中

n = hist(Y,n)                                          參量n爲標量,用於指定柱狀圖的數目

[n,xout]  = hist(...)                                 返回向量n與包含頻率計數與柱狀圖的位置向量xout,用戶能夠用命令bar(xout,n)畫出條形直方圖

hist(...)                                                   直接繪出柱狀圖

例:建立服從高斯分佈的數據柱狀圖,再將這些數據分到範圍指定的若干個相同的柱狀圖中。

 1 >> Y = randn(10000,1);
 2 >> subplot(1,2,1)
 3 >> hist(Y)
 4 >> title('高斯分佈柱狀圖')
 5 >> x = -4:0.1:4;
 6 >> subplot(1,2,2)
 7 >> hist(Y,x)
 8 >> h = findobj(gca, 'Type', 'patch');
 9 >> set(h,'FaceColor','r')
10 >> title('指定範圍的高斯分佈柱狀圖')

運行結果以下:

rose命令的使用格式與hist命令很是類似,具體以下:

調用格式                                                           說明 

rose(theta)                                             顯示參數theta的數據在20個區間或更少的區間內的分佈。向量theta中的角度單位爲弧度,用於肯定每一

                                                                 區間與原點的角度,每一區間長度反映出輸入參量的元素落入該區間的個數

rose(theta,x)                                           用參量x指定每一區間內的元素與區間的位置,length(x)等於每一區間內元素的個數與每一區間位置角度

                                                                 的中間角度

rose(theta,n)                                          在區間[0,2π]內畫出n個等距的小扇形,默認值爲20

[tout,rout] = rose(...)                               返回向量tout與rout,能夠用polar(tout,rout)畫出圖形,但此命令不畫任何的圖形

例:畫出上例中的高斯分佈數據的極座標下的柱狀圖

1 >> theta = Y * pi;
2 >> rose(theta)
3 >> title('極座標系下的柱狀圖')

四.偏差棒圖

MATLAB中繪製偏差棒圖的命令爲errorbar,它的使用格式以下:

調用格式                                                     說明

errorbar(Y,E)                                      畫出向量Y,同時顯示在向量Y的每一元素之上的偏差棒,其中偏差棒爲E(i)在曲線y上面與下面的距離線段,

                                                             故偏差棒的長度爲2E(i)

errorbar(X,Y,E)                                   X、Y、E必須爲同型參量。若同爲向量,則畫出曲線上點(X(i),Y(i))處長度爲2E(i)的偏差棒圖;若同爲矩陣,

                                                             則畫出曲面上點(X(i,j),Y(i,j))處帶長度爲E(i,j)的偏差棒圖

errorbar(X,Y,L,U)                               X、Y、L、U必須爲同型參量。若同爲向量,則在點(X(i),Y(i))處畫出向下長爲L(i)、向上長爲U(i)的偏差棒圖;

                                                             若同爲矩陣,則在點(X(i,j),Y(i,j)),處畫出向下長爲L(i,j)、向上長爲U(i,j)的偏差棒圖

errorbar(...,LineSpec)                       畫出用LineSpec指定線型、標記符、顏色等的偏差棒圖

h = errorbar(...)                                   返回線圖形對象的句柄向量h

繪出下表數據的偏差棒圖

觀察值                 213 225          232     221            254            243           236           287          254          257

實際值                 210            220           234            235            250            241           240           285          250          260

1 >> close all
2 >> x = [213 225 232 221 254 243 236 287 254 257];
3 >> y = [210 220 234 235 250 241 240 285 250 260];
4 >> e = abs(x - y);
5 >> errorbar(y, e)
6 >> title('偏差棒圖

5、箭頭圖

它的箭頭方向爲向量方向,箭頭的長短表示向量的大小。這種圖的繪製命令是quiver與quiver3。前者繪製的是二維圖形,後者繪製的是三維圖形。它們的使用格式也十分類似,只是後者比前者多一個座標參數,這裏咱們只介紹quiver的使用格式。

調用格式                                                                    說明

quiver(U,V)                                               其中U、V爲m*n矩陣,繪出在範圍爲x = 1:n和y = 1:m的座標系中由U和V定義的向量

quiver(X,Y,U,V)                                        若X爲n維向量,Y爲m維向量,U、V爲m*n矩陣,則畫出由X、Y肯定的每個點處由U和V定義的向量

quiver(...,scale)                                       自動對向量的長度進行處理,使之不會重疊,能夠對scale進行取值,若scale=2,則向量長度伸長2倍,

                                                                   若scale = 0, 則如實畫向量圖

quiver(...,LineSpec)                                用LineSpec指定的線型、符號、顏色等畫向量圖

quiver(...,LineSpec,'filled')                     對用LineSpec指定的記號進行填充

h = quiver(...)                                            返回每一個向量圖的句柄

例:繪製馬鞍面:上的法線方向向量。

 1 >> close all
 2 >> x = -4:0.25:4;
 3 >> y = x;
 4 >> [X,Y] = meshgrid(x,y);
 5 >> Z = -X.^4 + Y.^4 - X.^2 - Y.^2 + 2*X*Y;
 6 >> surf(X,Y,Z)
 7 >> hold on
 8 >> [U,V,W] = surfnorm(X,Y,Z);
 9 >> quiver3(X,Y,Z,U,V,W,0.05)
10 >> title('馬鞍面的法向量圖')

參考連接

matlab 繪圖-詳細全面

matlab繪製世界地圖的腳本

MATLAB中特殊圖形的繪製

相關文章
相關標籤/搜索