【matlab】全面總結:MATLAB如何畫出漂亮的圖
阿新 • • 發佈:2019-01-04
畫圖前已有開啟的圖形視窗,則再畫圖系統將自動
擦掉座標系中已有的圖形物件,但設定了hold on後,可以保持座標系中已繪出
的圖形.
33
01234567
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
圖(a)
還可以進一步設定包括線的寬度(LineWidth),標記點的邊緣顏色
(MarkerEdgeColor),填充顏色(MarkerFaceColor)及標記點的大小(MarkerSize)
等其它繪圖屬性.
例:設定繪圖線的線型,顏色,寬度,標記點的顏色及大小.
t=0:pi/20:pi;
y=sin(4*t).*sin(t)/2;
plot(t,y,'-bs','LineWidth',2,... %設定線的寬度為2
'MarkerEdgeColor','k',... %設定標記點邊緣顏色為黑色
'MarkerFaceColor','y',... %設定標記點填充顏色為黃色
'MarkerSize',10) %設定標記點的尺寸為10
繪出圖形如下:
00.511.522.533.5
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
34
4.雙Y軸繪圖:plotyy()函式 .
其呼叫格式為:
plotyy(x1,y1,x2,y2)------繪製由x1,y1和x2,y2確定的兩組曲線,其中x1,
y1的座標軸在圖形視窗的左側,x2,y2的座標軸在
圖形視窗的右側.
Plotyy(x1,y1,x2,y2, 'function1','function2')------功能同上,function是指那些
繪圖函式如:plot,semilogx,
loglog等.
例如:在一個圖形視窗中繪製雙Y軸曲線.
x=0:0.3:12;
y=exp(-0.3*x).*sin(x)+0.5;
plotyy(x,y,x,y,'plot','stem')
圖形如下:
024681012
0
0.5
1
1.5
024681012
0
0.5
1
1.5
stem:繪製stem形式的曲線(上端帶圈的豎線).
繪圖結果:兩條圖線自動用不同的顏色區分,兩個座標的顏色與圖線的顏
色相對應,左邊的Y軸座標對應的是plot形式的曲線,右邊的Y座標對應的
是stem形式的曲線.
二.對數座標圖繪製函式 :
在對數座標圖的繪製中,有三種繪圖函式:semilogx,semilogy和loglog函
數.
1)semilogx( )------繪製以X軸為對數座標軸的對數座標圖.
其呼叫格式為:semilogx(x,y,'屬性選項')
其中屬性選項同plot函式.
該函式只對橫座標進行對數變換,縱座標仍為線性座標.
2)semilogy( )------繪製以Y軸為對數座標軸的對數座標圖.
其呼叫格式為:semilogy(x,y,'屬性選項')
該函式只對縱座標進行對數變換,橫座標仍為線性座標.
35
3)loglog( )------ 繪製X,Y軸均為對數座標軸的圖形.
其呼叫格式為:loglog(x,y,'屬性選項')
該函式 分別對橫,縱座標都進行對數變換.
例:x=0:0.1:6*pi;
y=cos(x/3)+1/9;
subplot(221), semilogx(x,y);
subplot(222), semilogy(x,y);
subplot(223), loglog(x,y);
4)MATLAB還提供了一個實用的函式:logspace( )函式,可按對數等間距地分
布來產生一個向量,其呼叫格式為:
x=logspace(x1,x2,n)
這裡,x1表示向量的起點;x2表示向量的終點;n表示需要產生向量點的
個數(一般可以不給出,採用預設值50).
在控制系統分析中一般採用這種方法來構成頻率向量w.關於它的應用後面
還要講到.
三.極座標圖的繪製函式:
繪極座標圖可用polar( )函式.其呼叫格式如下:
polar(theta, rho,'屬性選項')------theta:角度向量,rho:幅值向量,屬性
內容與plot函式基本一致.
例如:極座標模型為:3145/)/)cos((+ =θρ, ],[πθ80∈則繪出極座標圖
的程式為:theta=0:0.1:8*pi;
p=cos((5*theta)/4)+1/3;
polar(theta,p)
0.5
1
1.5
30
210
60
240
90
270
120
300
150
330
1800
四.繪製多個子圖:subplot( )函式
MATLAB允許在一個圖形視窗上繪製多個子圖(如對於多變數系統的輸
出),允許將視窗分成nxm個部分.
分割圖形視窗用subplot函式來實現,其呼叫格式為:
subplot(n,m,k)或subplot(nmk)------n,m分別表示將視窗分割的行數和列數,
36
k表示要畫圖部分的代號,表示第幾個圖形,nmk三個數可以連寫,中間不用
符號分開.
例如:將視窗劃分成2x2=4個部分,可以這樣寫:
subplot(2,2,1),plot(……)
subplot(2,2,2),……
subplot(2,2,3),……
subplot(2,2,4),……
221 222
223 224
注:subplot函式沒有畫圖功能,只是將視窗分割.
第三節 圖形的修飾與標註
MATLAB提供了一些特殊的函式修飾畫出的圖形,這些函式如下:
1)座標軸的標題:title函式
其呼叫格式為:title('字串')------字串可以寫中文
如:title('My own plot')
2)座標軸的說明:xlabel和ylabel函式
格式:xlabel('字串')
ylabel('字串')
如:xlabel('This is my X axis')
ylabel('My Y axis')
3)圖形說明文字:text和gtext函式
A.text函式:按指定位置在座標系中寫出說明文字.
格式為:text(x1, y1, '字串', '選項')
x1,y1為指定點的座標;'字串'為要標註的文字;'選項'決定x1,y1
的座標單位,如沒有選項,則x1,y1的座標單位和圖中一致;如選項為'sc',
則x1,y1表示規範化視窗的相對座標,其範圍為0到1.
(1,1)
規範化視窗
(0,0)
37
如:text(1,2, '正弦曲線')
B.gtext函式:按照滑鼠點按位置寫出說明文字.
格式為:gtext('字串')
當呼叫這個函式時,在圖形視窗中出現一個隨滑鼠移動的大十字交叉線,
移動滑鼠將十字線的交叉點移動到適當的位置,點選滑鼠左鍵,gtext引數中
的字串就標註在該位置上.
4)給圖形加網格:grid函式
在呼叫時直接寫grid即可.
上面的函式的應用例項:
例:在圖形中加註座標軸標識和標題及在圖形中的任意位置加入文字.
t=0:pi/100:2*pi;
y=sin(t);
plot(t,y),grid,
axis([0 2*pi -1 1])
xlabel('0 leq itt rm leq pi','FontSize',16)
ylabel('sin(t)','FontSize',20)
title('正弦函式圖形','FontName','隸書' ,'FontSize',20)
text(pi,sin(pi),'leftarrowsin(t)=0','FontSize',16)
text(3*pi/4,sin(3*pi/4),'leftarrowsin(t)=0.707', 'FontSize',16)
text(5*pi/4,sin(5*pi/4),' sin(t)=-0.707rightarrow',...
'FontSize',16,'HorizontalAlignment','right')
畫出的圖形為:
0246
-1
-0.5
0
0.5
1
0 ≤ t ≤ π
sin(t)
正弦函式圖形
←sin(t)=0
←sin(t)=0.707
sin(t)=-0.707→
5)在圖形中新增圖例框:legend函式
其呼叫格式為:
A.legend('字串1', '字串2', ……)------以字串1,字串2…… 作
38
為圖形標註的圖例.
B.legend('字串1', '字串2', ……, pos)------pos指定圖例框顯示的位置.
圖例框被預定了6個顯示位置:
0------取最佳位置;
1------右上角(預設值);
2------左上角;
3------左下角;
4------右下角;
-1------圖的右側.
例:在圖形中新增圖例.
x=0:pi/10:2*pi;
y1=sin(x);
y2=0.6*sin(x);
y3=0.3*sin(x);
plot(x,y1,x,y2,'-o',x,y3,'-*')
legend('曲線1','曲線2','曲線3')
繪出圖形如下:
02468
-1
-0.5
0
0.5
1
曲線1
曲線2
曲線3
6)用滑鼠點選螢幕上的點:ginput函式
格式為:[x, y, button]=ginput(n)
其中:n為所選擇點的個數;x,y均為向量,x為所選n個點的橫座標;
y為所選n個點的縱座標.
button為n維向量,是所選n個點所對應的滑鼠鍵的標號:
1------左鍵;
2------中鍵;
3------右鍵.
可用不同的滑鼠鍵來選點,以區別所選的點.
此語句可以放在繪圖語句之後,它可在繪出的圖形上操作,選擇你所感
興趣的點,如峰值點,達到穩態值的點等,給出點的座標,可求出系統的
效能指標.
39
第四節 MATLAB下圖形物件的修改
MATLAB圖形物件是指圖形系統中最基本,最底層的單元,這些物件包括:
螢幕(Root),圖形視窗(Figures),座標軸(Axes),控制元件(Uicontrol),選單(Uimenu),
線(Lines),塊(Patches),面(Surface),影象(Images),文字(Text)等等.
根據各物件的相互關係,可以構成如下所示的樹狀層次:
Root
Figures
Axes Uicontrol Uimenu Uicontextmenu (物件選單)
Images Line Patch Surface Text
對各種圖形物件進行修改和控制,要使用MATLAB的圖形物件控制代碼
(Handle).在MATLAB中,每個圖形物件創立時,就被賦予了唯一的標識,這
個標識就是該物件的控制代碼.
控制代碼的值可以是一個數,也可以是一個向量.如每個計算機的根物件只有
一個,它的控制代碼總是0,圖形視窗的控制代碼總是正整數,它標識了圖形視窗的序號
等.
利用控制代碼可以操縱一個已經存在的圖形物件的屬性,特別是對指定圖形對
象控制代碼的操作不會影響同時存在的其它圖形物件,這一點是非常重要的.
一.對圖形物件的修改可以用下面函式:
1)set函式:用於設定控制代碼所指的圖形物件的屬性.
Set函式的格式為:
set(控制代碼, 屬性名1, 屬性值1, 屬性名2, 屬性值2, ……)
例:h=plot(x,y)
set(h, 'Color', [1,0,0])------將控制代碼所指曲線的顏色設為紅色.
2)get函式:獲取指定控制代碼的圖形物件指定屬性的當前值.
格式為:get(控制代碼, '屬性名')
如: get(gca, 'Xcolor')------獲得X軸的當前顏色屬性值.
執行後可返回X軸的當前顏色屬性值[0,0,0](黑色).
3)如果沒有設定控制代碼,則可以使用下列函式獲得:
gcf:獲得當前圖形視窗的控制代碼;
gca:獲得當前座標軸物件的控制代碼;
gco:獲得當前物件的控制代碼.
如:
A.要對圖形視窗的底色進行修改,可用:
set(gcf, 'Color', [1,1,1])------將圖形視窗底色設為白色
B.要把當前X軸的顏色改為綠色,可用:
set(gca, 'Xcolor', [0,1,0])
40
C.還可對座標軸的顯示刻度進行定義:
t=-pi:pi/20:pi;
y=sin(t);
plot(t,y)
set(gca,'xtick',[-pi:pi/2:pi],'xticklabel',['-pi','-pi/2','0','pi/2','pi'])
-pi-pi/20pi/2pi
-1
-0.5
0
0.5
1
本例中用'xtick'屬性設定x軸刻度的位置(從-pi~pi,間隔pi/2,共設定
5個點),用'xticklabel'來指定刻度的值,由於通常習慣於用角度度量三角函
數,因此重新設定['-pi','-pi/2','0','pi/2','pi']5個刻度值.
二.一些常用的屬性如下:
1)Box屬性:決定圖形座標軸是否為方框形式,選項為'on'(有方框),
'off'(無方框);
2)'ColorOrder'屬性:設定多條曲線的顏色順序,預設值為:
[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]
黃色 粉色 天藍 紅色 綠色 蘭色
顏色向量還有:[1 1 1]------白色;[0 0 0]------黑色.
3)座標軸方向屬性:'Xdir','Ydir','Zdir',其選項為:
'normal'------正常
'reverse'------反向
4)座標軸顏色和線型屬性:'Xcolor','Ycolor','Zcolor'------ 軸顏色,
值為顏色向量
擦掉座標系中已有的圖形物件,但設定了hold on後,可以保持座標系中已繪出
的圖形.
33
01234567
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
圖(a)
還可以進一步設定包括線的寬度(LineWidth),標記點的邊緣顏色
(MarkerEdgeColor),填充顏色(MarkerFaceColor)及標記點的大小(MarkerSize)
等其它繪圖屬性.
例:設定繪圖線的線型,顏色,寬度,標記點的顏色及大小.
t=0:pi/20:pi;
y=sin(4*t).*sin(t)/2;
plot(t,y,'-bs','LineWidth',2,... %設定線的寬度為2
'MarkerEdgeColor','k',... %設定標記點邊緣顏色為黑色
'MarkerFaceColor','y',... %設定標記點填充顏色為黃色
'MarkerSize',10) %設定標記點的尺寸為10
繪出圖形如下:
00.511.522.533.5
-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
34
4.雙Y軸繪圖:plotyy()函式
其呼叫格式為:
plotyy(x1,y1,x2,y2)------繪製由x1,y1和x2,y2確定的兩組曲線,其中x1,
y1的座標軸在圖形視窗的左側,x2,y2的座標軸在
圖形視窗的右側.
Plotyy(x1,y1,x2,y2, 'function1','function2')------功能同上,function是指那些
繪圖函式如:plot,semilogx,
loglog等.
例如:在一個圖形視窗中繪製雙Y軸曲線.
x=0:0.3:12;
y=exp(-0.3*x).*sin(x)+0.5;
plotyy(x,y,x,y,'plot','stem')
圖形如下:
024681012
0
0.5
1
1.5
024681012
0
0.5
1
1.5
stem:繪製stem形式的曲線(上端帶圈的豎線).
繪圖結果:兩條圖線自動用不同的顏色區分,兩個座標的顏色與圖線的顏
色相對應,左邊的Y軸座標對應的是plot形式的曲線,右邊的Y座標對應的
是stem形式的曲線.
二.對數座標圖繪製函式
在對數座標圖的繪製中,有三種繪圖函式:semilogx,semilogy和loglog函
數.
1)semilogx( )------繪製以X軸為對數座標軸的對數座標圖.
其呼叫格式為:semilogx(x,y,'屬性選項')
其中屬性選項同plot函式.
該函式只對橫座標進行對數變換,縱座標仍為線性座標.
2)semilogy( )------繪製以Y軸為對數座標軸的對數座標圖.
其呼叫格式為:semilogy(x,y,'屬性選項')
該函式只對縱座標進行對數變換,橫座標仍為線性座標.
35
3)loglog( )------ 繪製X,Y軸均為對數座標軸的圖形.
其呼叫格式為:loglog(x,y,'屬性選項')
該函式
例:x=0:0.1:6*pi;
y=cos(x/3)+1/9;
subplot(221), semilogx(x,y);
subplot(222), semilogy(x,y);
subplot(223), loglog(x,y);
4)MATLAB還提供了一個實用的函式:logspace( )函式,可按對數等間距地分
布來產生一個向量,其呼叫格式為:
x=logspace(x1,x2,n)
這裡,x1表示向量的起點;x2表示向量的終點;n表示需要產生向量點的
個數(一般可以不給出,採用預設值50).
在控制系統分析中一般採用這種方法來構成頻率向量w.關於它的應用後面
還要講到.
三.極座標圖的繪製函式:
繪極座標圖可用polar( )函式.其呼叫格式如下:
polar(theta, rho,'屬性選項')------theta:角度向量,rho:幅值向量,屬性
內容與plot函式基本一致.
例如:極座標模型為:3145/)/)cos((+ =θρ, ],[πθ80∈則繪出極座標圖
的程式為:theta=0:0.1:8*pi;
p=cos((5*theta)/4)+1/3;
polar(theta,p)
0.5
1
1.5
30
210
60
240
90
270
120
300
150
330
1800
四.繪製多個子圖:subplot( )函式
MATLAB允許在一個圖形視窗上繪製多個子圖(如對於多變數系統的輸
出),允許將視窗分成nxm個部分.
分割圖形視窗用subplot函式來實現,其呼叫格式為:
subplot(n,m,k)或subplot(nmk)------n,m分別表示將視窗分割的行數和列數,
36
k表示要畫圖部分的代號,表示第幾個圖形,nmk三個數可以連寫,中間不用
符號分開.
例如:將視窗劃分成2x2=4個部分,可以這樣寫:
subplot(2,2,1),plot(……)
subplot(2,2,2),……
subplot(2,2,3),……
subplot(2,2,4),……
221 222
223 224
注:subplot函式沒有畫圖功能,只是將視窗分割.
第三節 圖形的修飾與標註
MATLAB提供了一些特殊的函式修飾畫出的圖形,這些函式如下:
1)座標軸的標題:title函式
其呼叫格式為:title('字串')------字串可以寫中文
如:title('My own plot')
2)座標軸的說明:xlabel和ylabel函式
格式:xlabel('字串')
ylabel('字串')
如:xlabel('This is my X axis')
ylabel('My Y axis')
3)圖形說明文字:text和gtext函式
A.text函式:按指定位置在座標系中寫出說明文字.
格式為:text(x1, y1, '字串', '選項')
x1,y1為指定點的座標;'字串'為要標註的文字;'選項'決定x1,y1
的座標單位,如沒有選項,則x1,y1的座標單位和圖中一致;如選項為'sc',
則x1,y1表示規範化視窗的相對座標,其範圍為0到1.
(1,1)
規範化視窗
(0,0)
37
如:text(1,2, '正弦曲線')
B.gtext函式:按照滑鼠點按位置寫出說明文字.
格式為:gtext('字串')
當呼叫這個函式時,在圖形視窗中出現一個隨滑鼠移動的大十字交叉線,
移動滑鼠將十字線的交叉點移動到適當的位置,點選滑鼠左鍵,gtext引數中
的字串就標註在該位置上.
4)給圖形加網格:grid函式
在呼叫時直接寫grid即可.
上面的函式的應用例項:
例:在圖形中加註座標軸標識和標題及在圖形中的任意位置加入文字.
t=0:pi/100:2*pi;
y=sin(t);
plot(t,y),grid,
axis([0 2*pi -1 1])
xlabel('0 leq itt rm leq pi','FontSize',16)
ylabel('sin(t)','FontSize',20)
title('正弦函式圖形','FontName','隸書' ,'FontSize',20)
text(pi,sin(pi),'leftarrowsin(t)=0','FontSize',16)
text(3*pi/4,sin(3*pi/4),'leftarrowsin(t)=0.707', 'FontSize',16)
text(5*pi/4,sin(5*pi/4),' sin(t)=-0.707rightarrow',...
'FontSize',16,'HorizontalAlignment','right')
畫出的圖形為:
0246
-1
-0.5
0
0.5
1
0 ≤ t ≤ π
sin(t)
正弦函式圖形
←sin(t)=0
←sin(t)=0.707
sin(t)=-0.707→
5)在圖形中新增圖例框:legend函式
其呼叫格式為:
A.legend('字串1', '字串2', ……)------以字串1,字串2…… 作
38
為圖形標註的圖例.
B.legend('字串1', '字串2', ……, pos)------pos指定圖例框顯示的位置.
圖例框被預定了6個顯示位置:
0------取最佳位置;
1------右上角(預設值);
2------左上角;
3------左下角;
4------右下角;
-1------圖的右側.
例:在圖形中新增圖例.
x=0:pi/10:2*pi;
y1=sin(x);
y2=0.6*sin(x);
y3=0.3*sin(x);
plot(x,y1,x,y2,'-o',x,y3,'-*')
legend('曲線1','曲線2','曲線3')
繪出圖形如下:
02468
-1
-0.5
0
0.5
1
曲線1
曲線2
曲線3
6)用滑鼠點選螢幕上的點:ginput函式
格式為:[x, y, button]=ginput(n)
其中:n為所選擇點的個數;x,y均為向量,x為所選n個點的橫座標;
y為所選n個點的縱座標.
button為n維向量,是所選n個點所對應的滑鼠鍵的標號:
1------左鍵;
2------中鍵;
3------右鍵.
可用不同的滑鼠鍵來選點,以區別所選的點.
此語句可以放在繪圖語句之後,它可在繪出的圖形上操作,選擇你所感
興趣的點,如峰值點,達到穩態值的點等,給出點的座標,可求出系統的
效能指標.
39
第四節 MATLAB下圖形物件的修改
MATLAB圖形物件是指圖形系統中最基本,最底層的單元,這些物件包括:
螢幕(Root),圖形視窗(Figures),座標軸(Axes),控制元件(Uicontrol),選單(Uimenu),
線(Lines),塊(Patches),面(Surface),影象(Images),文字(Text)等等.
根據各物件的相互關係,可以構成如下所示的樹狀層次:
Root
Figures
Axes Uicontrol Uimenu Uicontextmenu (物件選單)
Images Line Patch Surface Text
對各種圖形物件進行修改和控制,要使用MATLAB的圖形物件控制代碼
(Handle).在MATLAB中,每個圖形物件創立時,就被賦予了唯一的標識,這
個標識就是該物件的控制代碼.
控制代碼的值可以是一個數,也可以是一個向量.如每個計算機的根物件只有
一個,它的控制代碼總是0,圖形視窗的控制代碼總是正整數,它標識了圖形視窗的序號
等.
利用控制代碼可以操縱一個已經存在的圖形物件的屬性,特別是對指定圖形對
象控制代碼的操作不會影響同時存在的其它圖形物件,這一點是非常重要的.
一.對圖形物件的修改可以用下面函式:
1)set函式:用於設定控制代碼所指的圖形物件的屬性.
Set函式的格式為:
set(控制代碼, 屬性名1, 屬性值1, 屬性名2, 屬性值2, ……)
例:h=plot(x,y)
set(h, 'Color', [1,0,0])------將控制代碼所指曲線的顏色設為紅色.
2)get函式:獲取指定控制代碼的圖形物件指定屬性的當前值.
格式為:get(控制代碼, '屬性名')
如: get(gca, 'Xcolor')------獲得X軸的當前顏色屬性值.
執行後可返回X軸的當前顏色屬性值[0,0,0](黑色).
3)如果沒有設定控制代碼,則可以使用下列函式獲得:
gcf:獲得當前圖形視窗的控制代碼;
gca:獲得當前座標軸物件的控制代碼;
gco:獲得當前物件的控制代碼.
如:
A.要對圖形視窗的底色進行修改,可用:
set(gcf, 'Color', [1,1,1])------將圖形視窗底色設為白色
B.要把當前X軸的顏色改為綠色,可用:
set(gca, 'Xcolor', [0,1,0])
40
C.還可對座標軸的顯示刻度進行定義:
t=-pi:pi/20:pi;
y=sin(t);
plot(t,y)
set(gca,'xtick',[-pi:pi/2:pi],'xticklabel',['-pi','-pi/2','0','pi/2','pi'])
-pi-pi/20pi/2pi
-1
-0.5
0
0.5
1
本例中用'xtick'屬性設定x軸刻度的位置(從-pi~pi,間隔pi/2,共設定
5個點),用'xticklabel'來指定刻度的值,由於通常習慣於用角度度量三角函
數,因此重新設定['-pi','-pi/2','0','pi/2','pi']5個刻度值.
二.一些常用的屬性如下:
1)Box屬性:決定圖形座標軸是否為方框形式,選項為'on'(有方框),
'off'(無方框);
2)'ColorOrder'屬性:設定多條曲線的顏色順序,預設值為:
[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]
黃色 粉色 天藍 紅色 綠色 蘭色
顏色向量還有:[1 1 1]------白色;[0 0 0]------黑色.
3)座標軸方向屬性:'Xdir','Ydir','Zdir',其選項為:
'normal'------正常
'reverse'------反向
4)座標軸顏色和線型屬性:'Xcolor','Ycolor','Zcolor'------ 軸顏色,
值為顏色向量