MATLAB繪圖與圖形處理(1)


7章  繪圖與圖形處理

人們很難從一大堆原始的數據中發現它們的含義,而數據圖形恰能使視覺感官直接感受到數據的許多內在本質,發現數據的內在聯系。MATLAB可以表達出數據的二維,三維,甚至四維的圖形。通過圖形的線型,立面,色彩,光線,視角等屬性的控制,可把數據的內在特征表現得淋漓盡致。下面我們分別介紹圖形的命令。

7.1  二維圖形

7.1.1  基本平面圖形命令

命令1  plot

功能  線性二維圖。在線條多於一條時,若用戶沒有指定使用顏色,則plot循環使用由當前坐標軸顏色順序屬性(current axes ColorOrder property)定義的顏色,以區別不同的線條。在用完上述屬性值后,plot又循環使用由坐標軸線型順序屬性(axes LineStyleOrder property)定義的線型,以區別不同的線條。

用法  plot(X,Y) 當X,Y均為實數向量,且為同維向量(可以不是同型向量),X=[x(i)],Y=[y(i)],則plot(X,Y)先描出點(x(i),y(i)),然后用直線依次相連;若X,Y為復數向量,則不考慮虛數部分。若X,Y均為同維同型實數矩陣,X = [X(i)],Y = [Y(i)],其中X(i),Y(i)為列向量,則plot(X,Y)依次畫出plot(X(i),Y(i)),矩陣有幾列就有幾條線;若X,Y中一個為向量,另一個為矩陣,且向量的維數等於矩陣的行數或者列數,則矩陣按向量的方向分解成幾個向量,再與向量配對分別畫出,矩陣可分解成幾個向量就有幾條線;在上述的幾種使用形式中,若有復數出現,則復數的虛數部分將不被考慮。

plot(Y) Y為實數向量,Y的維數為m,則plot(Y)等價於plot(X,Y),其中x=1m;若y為實數矩陣,則把y按列的方向分解成幾個列向量,而的行數為n,則plot(Y)等價於plot(X,Y)其中x=[1;2;…;n];在上述的幾種使用形式中,若有復數出現,則復數的虛數部分將不被考慮。

plot(X1,Y1,X2,Y2,…),其中Xi與Yi成對出現,plot(X1,Y1,X2,Y2,…)將分別按順序取兩數據Xi與Yi進行畫圖。若其中僅僅有Xi或Yi是矩陣,其余的為向量,向量維數與矩陣的維數匹配,則按匹配的方向來分解矩陣,再分別將配對的向量畫出。

plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2…) 將按順序分別畫出由三參數定義Xi,Yi,LineSpeci的線條。其中參數LineSpeci指明了線條的類型,標記符號,和畫線用的顏色。在plot 命令中我們可以混合使用三參數和二參數的形式:

plot(X1,Y1,LineSpec1,X2,Y2,X3,Y3,LineSpec3)

plot(,'PropertyName',PropertyValue,) 對所有的用plot生成的line圖形對象中指定的屬性進行恰當的設置。

h = plot(返回line圖形對象句柄的一列向量,一線條對應一句柄值。

說明  參數LineSpec

功能  定義線的屬性。Maltab允許用戶對線條定義如下的特性:

1.線型

7-1

定義符

-

--

-.

線型

實線(缺省值)

划線

點線

點划線

2.線條寬度

指定線條的寬度,取值為整數(單位為像素點)

3.顏色

7-2

定義符

R(red)

G(green)

b(blue)

c(cyan)

顏色

紅色

綠色

蘭色

青色

定義符

M(magenta)

y(yellow)

k(black)

w(white)

顏色

品紅

黃色

黑色

白色

4.標記類型

7-3

定義符

+

o(字母)

*

.

x

標記類型

加號

小圓圈

星號

實點

交叉號

定義符

d

^

v

>

<

標記類型

棱形

向上三角形

向下三角形

向右三角形

向左三角形

定義符

s

h

P

   

標記類型

正方形

正六角星

正五角星

   

5.標記大小

指定標記符號的大小尺寸,取值為整數(單位為像素)

6.標記面填充顏色

指定用於填充標記符面的顏色。取值在上表。

7.標記周邊顏色

指定標記符顏色或者是標記符(小圓圈、正方形、棱形、正五角星、正六角星和四個方向的三角形)周邊線條的顏色。取值在上表。

在所有的能產生線條的命令中,參數LineSepc可以定義線條的下面三個屬性:線型、標記符號、顏色進行設置。對線條的上述屬性的定義可用字符串來定義,如:plot(x,y,'-.or')

結合xy,畫出點划線(-.),在數據點(xy)處畫出小圓圈(o),線和標記都用紅色畫出。其中定義符(即字符串)中的字母、符號可任意組合。若沒有定義符,則畫圖命令plot自動用缺省值進行畫圖。若僅僅指定了標記符,而非線型,則plot只在數據點畫出標記符。如:plot(x,y,’d’)

7-1

   >>t = 0:pi/20:2*pi;

   >>plot(t,t.*cos(t),'-.r*')

   >>hold on

   >>plot(exp(t/100).*sin(t-pi/2),'--mo')

   >>plot(sin(t-pi),':bs')

   >>hold off

圖形結果為圖7-1

7-2

   >>plot(t,sin(2*t),'-mo', 'LineWidth',2,'MarkerEdgeColor','k',

         'MarkerFaceColor',[.49 1 .63],'MarkerSize',12)

圖形結果為圖7-2

 

       圖7-1  二維曲線圖                  圖7-2  二維圖形的繪制

 

命令 fplot 

功能  在指定的范圍limits內畫出一元函數y=fx)的圖形。其中向量x的分量分布在指定的范圍內,y是與x同型的向量,對應的分量有函數關系:y(i)=f(x(i))。若對應於x的值,y返回多個值,則y是一個矩陣,其中每列對應一個fx)。例如,fx)返回向量[f1(x),f2(x),f3(x)],輸入參量x=[x1;x2;x3],則函數fx)返回矩陣

                 f1(x1)   f2(x1)  f3(x1)

                 f1(x2)   f2(x2)  f3(x2)

                 f1(x3)   f2(x3)  f3(x3)

注意一點的是,函數function必須是一個m-文件函數或者是一個包含變量x,且能用函數eval計算的字符串。例如:’sin(x)*exp(2*x)’,’[sin(x),cos(x)]’,’hump(x)’。

用法  fplot('function',limits) 在指定的范圍limits內畫出函數名為function的一元函數圖形。其中limits是一個指定x-軸范圍的向量[xmin xmax]或者是x軸和y軸的范圍的向量[xmin xmax ymin ymax]

      fplot('function',limits,LineSpec) 用指定的線型LineSpec畫出函數function

      fplot('function',limits,tol) 用相對誤差值為tol畫出函數function。相對誤差的缺省值為2e-3

      fplot('function',limits,tol,LineSpec) 用指定的相對誤差值tol和指定的線型LineSpec畫出函數function的圖形。

      fplot('function',limits,n) n>=1,則至少畫出n+1個點(即至少把范圍limits分成n個小區間),最大步長不超過(xmax-xmin)/n。

      fplot(‘function’,lims,…) 允許可選參數tolnLineSpec以任意組合方式輸入。

      [X,Y] = fplot('function',limits,返回橫坐標與縱坐標的值給變量X和Y,此時fplot不畫出圖形。若想畫出,可用命令plot(X,Y)。

      [] = plot('function',limits,tol,n,LineSpec,P1,P2,允許用戶直接給函數function輸入參數P1,P2等,其中函數functiond的定義形式為

                y = function(x,P1,P2,…)

      若想用缺省的tolnLineSpec值,只需將空矩陣([ ])傳遞給函數即可。

注意:fplot采用自適應步長控制來畫出函數function的示意圖,在函數的變化激烈的區間,采用小的步長,否則采用大的步長。總之,使計算量與時間最小,圖形盡可能精確。

7-3

>>fplot('tanh',[-2 2])

圖形結果為圖7-3

>>subplot(2,2,1);fplot('humps',[0 1])

>>subplot(2,2,2);fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi])

>>subplot(2,1,2);fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])

 

            圖7-3  函數畫圖                      圖7-4

 

命令 loglog

功能  雙對數圖形。

用法  loglog(Y) y為實數向量或矩陣,則結合y列向量的下標與y的列向量畫出。若y為復數向量或矩陣,則loglog(Y)等價於loglog(real(Y),imag(Y)),在loglog的其他使用形式中將忽略Y的虛數部分。

      loglog(X1,Y1,X2,Y2…結合Xn與Yn畫出圖形。若只有Xn或Yn為矩陣,另一個為向量,行向量維數等於矩陣的列數,列向量的維數等於矩陣的行數,則loglog把矩陣按向量的方向分解成向量,再與向量結合分別畫出圖形。

      loglog(X1,Y1,LineSpec1,X2,Y2,LineSpeec2…按順序取三個參數Xn,Yn, LineSpecn畫出線條,其中LineSpecn指定線條的線型,標記符號和顏色。用戶可以混合使用二參數和三參數形式,如:

                 loglog(X1,Y1,X2,Y2,LineSpec2,X3,Y3)

      loglog(,'PropertyName',PropertyValue,對所有由loglog命令生成的圖形對象句柄的屬性進行設置。

      h = loglog(返回line圖形句柄向量,每條線對應一個句柄。

7-4

>>x = logspace(-1,2);

>>loglog(x,10*exp(x),'-s')

>>grid on

 

                圖7-5

 

命令 semilogx

功能  x軸對數圖形。若沒有指定使用的顏色,當所畫線條較多時,semilogx將自動使用由當前軸的ColorOrder和LineStyleOrder屬性指定的顏色順序和線型順序來畫線。

用法  semilogx(Y)    %x軸的刻度求常用對數(以10為底),而y軸為線性刻度。若y為實數向量或矩陣,則結合y列向量的下標與y的列向量畫出線條;若y為復數向量或矩陣,則semilogx(Y)等價於semilogx(real(Y),imag(Y))。在semilogx的其他使用形式中,Y的虛數部分將被忽略。

      semilogx(X1,Y1,X2,Y2…)   %結合Xn和Yn畫出線條,若其中只有xnyn為矩陣,另外一個為向量,行向量的維數等於矩陣的列數,列向量的維數等於矩陣的行數,則按向量的方向分解矩陣,再與向量結合,分別畫出線條。

      semilogx(X1,Y1,LineSpec1X2,Y2,LineSpec2,)   %按順序取三參數Xn,Yn,LineSpecn畫線,參數LineSpecn指定使用的線型,標記符號和顏色。用戶可以混合使用二參數和三參數形式,如:

                 semilogx(X1,Y1,X2,Y2,LineSpec2,X3,Y3)

      semilogx(,'PropertyName',PropertyValue,)   %對所有由semilogx命令生成的圖形對象句柄的屬性進行設置

      h = semilogx()   %返回line圖形句柄向量,每條線對應一個句柄。

7-5

>>x = 0:.1:10;

>>semilogx(x,cos(10.^x))

圖形結果為圖7-6

 

 

命令 semilogy

用法:參見semilogx命令。

命令 fill

功能  用顏色填充二維多邊形。

用法  fill(X,Y,C) xy中的數據生成多邊形,用c指定的顏色填充它。其中c為色圖向量或矩陣。若c是行向量,則要求c的維數等於x的列數,若c為列向量,則要求c的維數等於xy的行數。

      fill(X,Y,ColorSpec) ColorSpec指定的顏色填充由xy定義的多邊形

      fill(X1,Y1,C1,X2,Y2,C2,指定多個要填充的二維區域

      fill(,'PropertyName',PropertyValue) 允許用戶對一個patch圖形對象的某個屬性設定屬性值。

      h = fill(返回patch圖形對象句柄的向量,每一個patch對象對應一個句柄。

注意:

1. 若xy是一矩陣,另一個是向量,向量應是維數與矩陣的行數相等的列向量或是維數等於矩陣列數的行向量時,函數fill將向量復制成與矩陣同型的矩陣。函數fill將矩陣xy中列向量中的數據生成多邊形的頂點。

2. 顏色陰影類型決定於用戶在參數中列出的顏色,若用戶用ColorSpec指定顏色,命令fill生成平坦陰影模式(flat-shaded)多邊形,同時設置補片對象(patch)的FaceColor屬性為相應的RGB顏色矩陣。

3. 若用戶用參量c指定所用顏色,命令fill按坐標軸屬性Clim的比例縮小c中的元素,之后,c成為引用當前色圖的下標矩陣。

4. 若c為行向量,命令fill生成平面陰影的多邊形,c的每一元素決定由矩陣xy的每一列定義的多邊形內的顏色,每一補片對象的FaceColor屬性被設置為'flat',xy的每一行元素變成第n塊補片對象的Cdata屬性值,其中n為矩陣xy中的相應的列。

5. 若c為一列向量或一矩陣,命令fill運用一線性插值法計算每一節點的顏色,以便用插值顏色填充多邊形的內部。它設置補片對象的FaceColor屬性為‘interp’,且在一列中的元素變成每一補片的Cdata屬性值。若c為一列向量,命令fill用該向量復制成需要大小的尺寸。

7-6

>>t = (1/16:1/8:1)'*2*pi;

>>x = exp(t).*sin(t);

>>y = t.*cos(t);

>>fill(x,y,'k')

>>grid on

圖形結果為圖7-7

 

 

命令 zoom

功能  對二維圖形進行放大或縮小。放大或縮小會改變坐標軸范圍。

用法  zoom on 打開交互式的放大功能。當一個圖形處於交互式的放大狀態時,有兩種方法來放大圖形:

對於一鍵鼠標或二鍵,三鍵鼠標,單擊坐標軸內的任意一點,可使圖形放大一倍,這一操作可進行多次,直到matlab的最大顯示為止;對於二鍵或三鍵的鼠標,在坐標軸內單擊右鍵,可使圖形縮小一倍,這一操作可進行多次,直到還原圖形為止。對於一鍵鼠標,要想縮小圖形,需要按住鍵盤上的Shift鍵,再單擊鼠標鍵。

用鼠標拖出要放大的部分,系統將放大選定的區域。

      zoom off 關閉交互式放大功能。

      zoom out 將系統轉回非放大狀態,並將圖形恢復原狀。

      zoom reset 系統將記住當前圖形的放大狀態,作為放大狀態的設置值。以后使用zoom out或者是雙擊鼠標時,交互式放大狀態打開,且圖形並不是返回到原狀,而是返回reset時的放大狀態。

      zoom 用於切換放大的狀態:onoff

      zoom xon 只對x軸進行放大。

      zoom yon 只對y軸進行放大。

      zoom(factor) 用放大系數factor進行放大或縮小,而不影響交互式放大的狀態。若factor>1,系統將圖形放大factor倍,若0<factor≤1,系統將圖形放大1/factor倍。

      zoom(fig, option) 指定對窗口fig中(不一定為當前窗口)的二維圖形進行放大,其中參數option為:on、off、xon、yon、reset、factor等。

命令8  meshgrid

功能  生成二元函數z = f(x,y)中x-y平面上的矩形定義域中數據點矩陣X和Y,或者是三元函數u =  f(x,y,z)中立方體定義域中的數據點矩陣X,Y和Z。

用法  a[X,Y] = meshgrid(x,y)

      b[X,Y] = meshgrid(x)

      c[X,Y,Z] = meshgrid(x,y,z)

說明  對於形式a,輸入向量xx-y平面上矩形定義域的矩形分割線在x軸的值,向量yx-y平面上矩形定義域的矩形分割線在y軸的值。輸出向量X為x-y平面上矩形定義域的矩形分割點的橫坐標值矩陣,輸出向量Y為x-y平面上矩形定義域的矩形分割點的縱坐標值矩陣。

對於形式b,等價於形式a[X,Y] = meshgrid(x) = meshgrid(x,x)。

對於形式c,輸入向量x為立方體定義域的立方體分割平面在x軸上的值,輸入向量y為立方體定義域的立方體分割平面在y軸上的值,輸入向量z為立方體定義域的立方體分割平面在z軸上的值。輸出向量X為立方體定義域中分割點的x軸坐標值,Y為立方體定義域中分割點的y軸坐標值,Z為立方體定義域中分割點的z軸坐標值。

7-7

    >>x = [0.7 1.1 ]; y = [-2 3 1]; z = [2 5 3];  %分量不一定從小到大

    >>[X_2d,Y_2d] = meshgrid(x,y)

    >>[X_3d,Y_3d,Z_3d] = meshgrid(x,y,z)

計算結果為:

X_2d =

    0.7000    1.1000

    0.7000    1.1000

    0.7000    1.1000

Y_2d =

    -2    -2

     3     3

     1     1

X_3d(:,:,1) =

    0.7000    1.1000

    0.7000    1.1000

    0.7000    1.1000

X_3d(:,:,2) =

    0.7000    1.1000

    0.7000    1.1000

    0.7000    1.1000

X_3d(:,:,3) =

    0.7000    1.1000

    0.7000    1.1000

    0.7000    1.1000

Y_3d(:,:,1) =

    -2    -2

     3     3

     1     1

Y_3d(:,:,2) =

    -2    -2

     3     3

     1     1

Y_3d(:,:,3) =

    -2    -2

     3     3

     1     1

Z_3d(:,:,1) =

     2     2

     2     2

     2     2

Z_3d(:,:,2) =

     5     5

     5     5

     5     5

Z_3d(:,:,3) =

     3     3

     3     3

     3     3

7.1.2  特殊平面圖形命令

命令 polar

功能  畫極坐標圖。該命令接受極坐標形式的函數rho=f(θ),在笛卡兒坐標系平面上畫出該函數,且在平面上畫出極坐標形式的格柵。

用法  polar(theta,rho) 用極角theta和極徑rho畫出極坐標圖形。極角theta為從x軸到半徑的單位為弧度的向量,極徑rho為各數據點到極點的半徑向量。

      polar(theta,rho,LineSpec) 參量LineSpec指定極坐標圖中線條的線型、標記符號和顏色等。

7-8

>>t = 0:.01:2*pi;

>>polar(t,sin(3*t).*cos(2*t),'--r')

圖形結果為圖7-8

 

 

 

命令 bar

功能  二維垂直條形圖。用垂直條形顯示向量或矩陣中的值。

用法  bar(Y) y為向量,則分別顯示每個分量的高度,橫坐標為1lengthy);若y為矩陣,則bary分解成行向量,再分別畫出,橫坐標為1sizey1),即矩陣的行數。

      bar(x,Y) 在指定的橫坐標x上畫出y,其中x為嚴格單增的向量。若y為矩陣,則bar把矩陣分解成幾個行向量,在指定的橫坐標處分別畫出。

      bar(,width) 設置條形的相對寬度和控制在一組內條形的間距。缺省值為0.8,所以,如果用戶沒有指定x,則同一組內的條形有很小的間距,若設置width1,則同一組內的條形相互接觸。

      bar(,'style') 指定條形的排列類型。類型有“group”和“stack”,其中“group”為缺省的顯示模式。

      “group”:若yn*m階的矩陣,則bar顯示n組,每組有m個垂直條形的條形圖。

      “stack”:對矩陣y的每一個行向量顯示在一個條形中,條形的高度為該行向量中的分量和。其中同一條形中的每個分量用不同的顏色顯示出來,從而可以顯示每個分量在向量中的分布。

      bar(,LineSpec) 用指定的顏色LineSpec顯示所有的條形。

      [xb,yb] = bar(返回用戶可用命令plot或命令patch畫出條形圖的參量xbyb。這對用戶控制一個圖形的顯示是有用的,例如要在一個plot語句中加入裝飾性的條形圖等。

      h = bar(返回一個patch圖形對象句柄的向量。每一條形對應一個句柄。

7-9

x = -2.9:0.2:2.9;

bar(x,exp(x.*sin(x)))

colormap gray

圖形結果為圖7-9

 

 

7-10

subplot(2,2,4)

bar(Y,1.5)

title 'Width = 1.5'

圖形結果為圖7-10

 

 

 

命令 barh

功能  二維水平條形圖。用水平條形顯示向量或矩陣中的值。

用法  barh(Y) y為向量,則分別顯示每個分量的高度,縱坐標為1length(y);若y為矩陣,則bary分解成行向量,再分別畫出,縱坐標為1size(y,1),即矩陣的行數。

      barh(x,Y) 在指定的縱坐標x上以水平方向畫出y,其中x為嚴格單增的向量。若y為矩陣,則barh把矩陣分解成幾個行向量,在指定的縱坐標處分別畫出。

      barh(,width) 設置條形的相對寬度和控制在一組內條形的間距。缺省值為0.8,所以,如果用戶沒有指定x,則同一組內的條形有很小的間距,若設置width1,則同一組內的條形相互接觸。

      barh(,'style') 指定條形的排列類型。類型有“group”和“stack”,其中“group”為缺省的顯示模式。

             “group”:若yn*m階的矩陣,則bar顯示n組,每組有m個水平條形的條形圖。

              “stack”:對矩陣y的每一個行向量顯示在一個條形中,條形的高度為該行向量中的分量和。其中同一條形中的每個分量用不同的顏色顯示出來,從而可以顯示每個分量在向量中的分布。

      barh(,LineSpec) 用指定的顏色LineSpec顯示所有的條形。

      [xb,yb] = barh(返回用戶可用命令plot或命令patch畫出條形圖的參量xbyb。這給用戶控制一個圖形的顯示是有用的,例如要在一個plot語句中加入裝飾性的條形圖等。

      h = barh(返回一個patch圖形對象句柄的向量。每一條形對應一個句柄。

7-11

>>X = 1:.5:5;

>>Y = exp(X).*sin(X);

>>barh(Y,'stack')

圖形結果為圖7-11

 

 

 

命令4  compass

功能  從原點畫箭頭圖。箭頭圖為一顯示起點為笛卡兒坐標系中的原點的二維或三維方向或向量的圖形,同時在坐標系中顯示圓形的分隔線。

用法  compass(X,Y) 參量xy為同型的n維向量,則命令顯示n個箭頭,箭頭的起點為原點,箭頭的位置為[X(i),Y(i)]。

      compass(Z) 參量zn維復數向量,則命令顯示n個箭頭,箭頭起點為原點,箭頭的位置為[real(Z),imag(Z)].

      compass(,LineSpec) 用參量LineSpec指定箭頭圖的線型、標記符號、顏色等屬性。

      h = compass(返回line對象的句柄給h

7-12

  Z = magic(20).*randn(20);

  compass(Z)

圖形結果為圖7-12

 

 

 

命令 comet

功能  二維彗星圖。彗星圖為彗星頭(一個小圓圈)沿着數據點前進的動畫,彗星體為跟在彗星頭后面的痕跡,軌道為沿着整個函數的實線。我們要指出的是,由命令comet生成的軌跡是使用擦除模式(EraseMode)屬性的值為none,該屬性使用戶不能打印該圖形(只能得到彗星頭),且當用戶改變窗口的大小時,動畫將消失。

用法  comet(y) 彗星圖動畫顯示向量y確定的路線。

      comet(x,y) 彗星圖動畫顯示向量xy確定的路線。

      comet(x,y,p) 指定彗星體的長度p*length(y),缺省的p值為0.1。

7-13

>>t = 0:.01:2*pi;

>>x = exp(sin(2*t)).*(cos(t).^2/3);

>>y = t.*(sin(t).^2);

>>comet(x,y);

圖形結果為圖7-13

 

 

 

附:擦除模式(EraseMode)屬性及屬性值:{normal}|none|xor|background

    該屬性控制系統用於顯示與擦除線條對象的技術。不同的擦除模式對於生成動畫系列,即控制個別對象的重新顯示方式,對於改進外在顯示和獲得理想的效果是很必要的。

7-4

屬性值

含義

Normal

(缺省值)

重新顯示受影響的區域,在必要的時候,進行三維分析計算,以保證所有的對象的顯示都是正確的。該模式下的圖形顯示是最精確的,不過也是最緩慢的,以下其他三種模式顯示速度較快,不過沒有執行一個完全的重顯過程,因而,圖形顯示也不是很精確的。

none

當線條移動或改動時,該模式沒有擦除線條,而是仍然顯示於屏幕上。該模式下不能打印圖形,因為系統沒有存儲前一圖形的任何信息。

xor

使用異或運算(xor)計算線條顏色與當前位置下的顏色,用所得結果顯示與擦除線條。該模式對於線條下面對象的顏色沒有任何破壞,只是影響到線條的當前顯示顏色而已。

Background

用當前坐標軸顏色重新顯示線條的方式來擦除線條,若當前坐標軸顏色設置為none,則用圖形的背景色來代替坐標軸顏色。該模式對於處於擦除線條后面的對象來說是有損害的,不過當前線條的顏色總是最合適的。

命令6  errorbar

功能  沿着一曲線畫誤差棒形圖。誤差棒為數據的置信水平或者為沿着曲線的偏差。在下列參數中,若為矩陣,則按列畫出誤差棒。

用法  errorbar(Y,E) 畫出向量y,同時顯示在向量y的每一元素之上的誤差棒。誤差棒為E(i)在曲線y上面與下面的距離,所以誤差棒的長度為2*E(i)。

      errorbar(X,Y,E) X,Y,E必須為同型參量。若同為向量,則畫出帶長度為2*E(i)、對稱誤差棒於曲線點(X(i),Y(i))之處;若同為矩陣,則畫出帶長度為E(ij)、對稱誤差棒於曲面點(X(i,j),Y(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

7-14

>>X = 0:pi/10:pi;

>>Y = exp(X).*sin(X);

>>E = std(Y)*ones(size(X));

>>errorbar(X,Y,E)

圖形結果為圖7-14

 

 

 

命令7  feather

功能  畫出速度向量圖。一羽毛圖在橫坐標上等距地顯示向量。用戶要表示各個向量的、相對於原點的向量分量。

用法  feather(U,V) 顯示由參量向量uv確定的向量,其中u包含作為相對坐標系中的x成分,v包含作為相對坐標系中的y成分。

      feather(Z) 顯示復數參量向量z確定的向量,等價於feather(real(Z),imag(Z))。

      feather(,LineSpec) 用參量LineSpec指定的線型、標記符號、顏色等屬性畫出羽毛圖。

7-15

>>th = (-90:10:90)*pi/180; 

>>r = 4*ones(size(th));

>>[u,v] = pol2cart(th,r);

>>feather(u,v);

圖形結果為圖7-15

 

 

 

命令 hist

功能  二維條形直方圖,可以顯示出數據的分配情形。所有向量y中的元素或者是矩陣y中的列向量中的元素是根據它們的數值范圍來分組的,每一組作為一個條形進行顯示。條形直方圖中的x軸反映了數據y中元素數值的范圍,直方圖的y軸顯示出參量y中的元素落入該組的數目。所以y軸的范圍從0到任一條形中包含元素最多的數字。直方圖為一patch圖形對象,若想改變圖形的顏色,可以對patch對象的屬性進行設置。缺省時,圖形顏色是由當前色圖進行控制,當前色圖的第一個顏色為直方圖的顏色。

用法  n = hist(Y) 把向量y中的元素放入等距的10個條形中,且返回每一個條形中的元素個數。若y為矩陣,則該命令按列對y進行處理。

      n = hist(Y,x) 參量x為向量,把y中元素放到mm=length(x))個由x中元素指定的位置為中心的條形中。

      n = hist(Y,nbins) 參量nbins為標量,用於指定條形的數目。

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

7-16

>>x = -5:0.1:5;

>>y = randn(1000,1);

>>hist(y,x)

圖形結果為圖7-16

 

 

 

命令 histc

功能  直方圖記數

用法  n = histc(x,edges) 統計向量x中、落入向量edges(元素必須為單調的非減的)各個元素之間的元素個數。輸出參量n為一與向量edges同維的向量。其中若有edges(k)>=x(i)>=edges(k+1),則n(k)增加1X中超出向量edges規定的范圍的元素將不被統計。參量edges中可使用-infinf,用於包括向量x中非NaN的元素。若x為一矩陣,則對x的每一列進行上述操作。

      n = histc(x,edges,dim) 對多維矩陣的第dim維進行統計。

      [n,bin] = histc() n結果同上,同時返回矩陣下標bin。若x為向量,n(k) = sum(bin == k)。對於超出范圍的數值,bin為零值。

命令10  rose

功能  畫角度直方圖。該直方圖是一個顯示所給數據的變化范圍內數據的分布情形的極坐標圖,所給數據分成不同的組。每一組作為一小扇形進行顯示。

用法  rose(theta)  畫一角度直方圖,顯示參數theta的數據在20個區間或更少的區間內的分布。向量theta中的角度單位為弧度,用於確定每一區間與原點的角度。每一區間的長度反映出輸入參量的元素落入一區間的個數。

      rose(theta,x) 用參量x指定每一區間內的元素與區間的位置,length(x)等於每一區間內元素的個數與每一區間位置角度的中間角度。例如,若x為一5維向量,rose命令分配參量theta中的元素為5部分,每一部分的角度中線由x指定。

      rose(theta,nbins) 於區間 [0,2*pi] 內畫出nbins個等距的小扇形。缺省值為20

      [tout,rout] = rose(返回向量toutrout,可以用polar(tout,rout)畫出圖形。該命令沒有畫任何的圖形。

7-17

   >>theta = 3*pi*randn(1,30);

   >>rose(theta)

圖形結果為圖7-17

 

 

 

命令11  stairs

功能  畫二維階梯圖,這種圖對與時間有關的數字樣本系統的作圖很有用處。

用法  stairs(Y) 用參量y的元素畫一階梯圖。若y為向量,則橫坐標x的范圍從1m=length(y),若y為矩陣,則對y的每一行畫一階梯圖,其中x的范圍從1y的列數m

     stairs(X,Y) 結合xy畫階梯圖。其中要求xy為同型的向量或矩陣。此外,x可以為行向量或為列向量,且y為有m=lengthx)行的矩陣。

     stairs(,LineSpec) 用參數LineSpec指定的線型、標記符號和顏色畫階梯圖。

     [xb,yb] = stairs(Y) 該命令沒有畫圖,而是返回可以用命令plot畫出參量y的階梯圖的向量xbyb

     [xb,yb] = stairs(X,Y) 該命令沒有畫圖,而是返回可以用命令plot畫出參量xy的階梯圖的向量xbyb

7-18

>>x = 0:.25:10;

>>stairs(x,exp(sin(x.^2)))

圖形結果為圖7-18

 

 

 

命令12  stem

功能  畫二維離散數據的柄形圖。該圖用線條顯示數據點與x軸的距離,一小圓圈(缺省標記)或用指定的其他標記符號與線條相連,在y軸上標記數據點的值。

用法  stem(Y) y元素的順序畫出柄形圖,在x軸上,柄與柄之間的距離相等;若y為矩陣,則把y分成幾個行向量,在同一橫坐標的位置上畫出一個行向量的柄圖。

      stem(X,Y) 在橫坐標x上畫出列向量y的柄形圖 。其中xy為同型的向量或矩陣,此外,x可以為行向量或列向量,而y為有m=lengthx)行的矩陣。

      stem(,'fill') 指定是否對柄形圖末端的小圓圈填充顏色。

      stem(,LineSpec) 用參數LineSpec指定線型,標記符號和柄圖末端的小圓圈的顏色畫柄圖。

      h = stem(返回柄形圖的line圖形對象句柄向量。

7-19

>>x = linspace(0,2,10);

>>stem(exp(-x.^2),'fill','-.')

圖形結果為圖7-19

 

 

 

命令13  stem3

功能  畫三維離散數據的柄形圖。該圖用一線段顯示數據離開xy平面的高度,在線段的末端用一小圓圈(缺省記號)或其他的標記符號表示數據的高度。

格式  stem3(Z) 用柄形圖顯示z中數據與xy平面的高度。若z為一行向量,則xy將自動生成,stem3將在與x軸平行的方向上等距的位置上畫出z的元素;若y為列向量,stem3將在與y軸平行的方向上等距的位置上畫出z的元素。

      stem3(X,Y,Z) 在參數xy指定的位置上畫出z的元素,其中xyz必須為同型的向量或矩陣。

      stem3(,'fill') 指定是否要填充柄形圖末端小圓圈。

      stem3(,LineSpec) 指定線型,標記符號和末端小圓圈的顏色。

      h = stem3(返回柄形圖的line圖形對象句柄。

7-20

[X,Y,Z] = peaks(20);

stem3(X,Y,Z,’r*')

圖形結果為圖7-20

 

 

 

命令14  pie

功能  餅形圖

格式  pie(X)  x中的數據畫一餅形圖,x中的每一元素代表餅形圖中的一部分。X中元素X(i)所代表的扇形大小通過X(i)/sum(X)的大小來決定。若有sum(X)=1,則x中元素就直接指定了所在部分的大小;若sum(X)<1,則畫出一不完整的餅形圖。

      pie(X,explode) 從餅形圖中分離出一部分,explode為元素為零或非零的、與x相對應的向量或矩陣。與explode的非零值對應的部分將從餅形圖中心分離出來。explode必須與x同型。

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

7-21

>>x = [1 3 0.5 2.5 2];

>>explode = [0 1 0 0 0];

>>pie(x,explode)

圖形結果為圖7-21

 

 

 

7.1.3  二維圖形注釋命令

命令 grid

功能  給二維或三維圖形的坐標面增加分隔線。該命令會對當前坐標軸的Xgrid,Ygrid,Zgrid的屬性有影響。

用法  grid on 給當前的坐標軸增加分隔線。

      grid off 從當前的坐標軸中去掉分隔線。

      grid 轉換分隔線的顯示與否的狀態。

      grid(axes_handle,on|off) 對指定的坐標軸axes_handle是否顯示分隔線。

命令 gtext

功能  在當前二維圖形中用鼠標放置文字。當光標進入圖形窗口時,會變成一個大十字,表明系統正等待用戶的動作。

用法  gtext('string') 當光標位於一個圖形窗口內時,等待用戶單擊鼠標或鍵盤。若按下鼠標或鍵盤,則在光標的位置放置給定的文字“string

      h = gtext('string') 當用戶在鼠標指定的位置放置文字“string”后,返回一個text圖形對象句柄給h

命令 legend

功能  在圖形上添加圖例。該命令對有多種圖形對象類型(線條圖,條形圖,餅形圖等)的窗口中顯示一個圖例。對於每一線條,圖例會在用戶給定的文字標簽旁顯示線條的線型,標記符號和顏色等。當所畫的是區域(patchsurface對象)時,圖例會在文字旁顯示表面顏色。Matlab在一個坐標軸中僅僅顯示一個圖例。圖例的位置有幾個因素決定,像遮擋的對象等,用戶可以用鼠標拖動圖例到恰當的位置,雙擊標簽可以進入標簽編輯狀態。

用法  legend('string1','string2',用指定的文字string在當前坐標軸中對所給數據的每一部分顯示一個圖例。

      legend(h,'string1','string2',用指定的文字string在一個包含於句柄向量h中的圖形顯示圖例。用給定的數據對相應的圖形對象加上圖例。

      legend(string_matrix) 用字符矩陣參量string_matrix的每一行字符串作為標簽。

      legend(h,string_matrix) 用字符矩陣參量string_matrix的每一行字符串作為標簽給包含於句柄向量h中的相應的圖形對象加標簽。

      legend(axes_handle,給由句柄axes_handle指定的坐標軸顯示圖例。

      legend('off') 從當前的坐標軸,或是由axes-handle指定的坐標軸中除掉圖例。

      legend(axes_handle,'off') 從由axes_handle指定的坐標軸中除掉圖例。

      legend_handle = legend 返回當前坐標軸中的圖例句柄,若坐標軸中沒有圖例存在,則返回空向量。

      legend 對當前圖形中所有的圖例進行刷新。

      legend(legend_handle) 對由句柄legend_handle指定的圖例進行刷新。

      legend(,pos) 在指定的位置pos放置圖例見表7-5

7-5

Pos取值

pos=-1

pos=0

Pos=1

圖例位置

坐標軸之外的右邊

坐標軸之內,有可能遮擋部分圖形

坐標軸的右上角(缺省位置)

Pos取值

pos=2

pos=3

pos=4

圖例位置

坐標軸的左上角

在坐標軸的左下角

坐標軸的右下角

      h = legend(返回圖例的句柄向量。

      [legend_handle,object_handles] = legend(返回圖例句柄,該句柄為坐標軸定義於圖例中的圖形對象、line對象、text對象的句柄。這些句柄允許用戶對每個對象進行詳細的操作。

7-22

     >>x = -pi:pi/20:pi;

     >>plot(x,(cos(x)).^2,'rd',x,asin(x),'-.b')

     >>h = legend('cos2x','asin',2);

圖形結果為圖7-22

 

 

 

命令4  title

功能  給當前軸加上標題。每個axes圖形對象可以有一個標題。標題定位於axes的上方正中央。

用法  title('string') 在當前坐標軸上方正中央放置字符串string作為標題

      title(fname) 先執行能返回字符串的函數fname,然后在當前軸上方正中央放置返回的字符串作為標題

      title(,'PropertyName',PropertyValue,對由命令title生成的text圖形對象的屬性進行設置

      h = title(返回作為標題的text對象句柄。

命令 text

功能  在當前軸中創建text對象。函數text是創建text圖形句柄的低級函數。可用該函數在圖形中指定的位置上顯示字符串。

用法  text(x,y,'string')在圖形中指定的位置(x,y)上顯示字符串string

     text(x,y,z,'string') 在三維圖形空間中的指定位置(x,y,z)上顯示字符串string

     text(x,y,z,’string’.'PropertyName',PropertyValue對引號中的文字string定位於用坐標軸指定的位置,且對指定的屬性進行設置。表7-6給出文字屬性名、含義及屬性值。

7-6

屬性名

屬性說明

屬性值

定義字符串

Editing

能否對文字進行編輯

有效值:onoff

缺省值:off

Interpretation

TeX字符是否可用

有效值:tex、none

缺省值:tex

String

字符串(包括TeX字符串)

有效值:可見字符串

放置字符串

Extent

text對象的范圍(位置與大小)

有效值:[left, bottom, width, height]

HorizontalAlignment

文字水平方向的對齊方式

有效值:left(文本外框左邊對齊,缺省對齊方式)、center(文本外框中間對齊)、right(文本外框右邊對齊)

缺省值:left

Position

文字范圍的位置

有效值:[x,y,z]直角坐標系

缺省值:[](空矩陣)

Rotation

文字對象的方位角度

有效值:標量(單位為度)

缺省值:0

Units

文字范圍與位置的單位

有效值:pixels (屏幕上的像素點)、normalized (把屏幕看成一個長、寬為1的矩形)、inches(英寸)、centimeters(厘米)、points (圖象點)、data

缺省值:data

VerticalAlignment

文字垂直方向的對齊方式

有效值:top (文本外框頂上對齊)、cap(文本字符頂上對齊)、middle(文本外框中間對齊)baseline(文本字符底線齊)、bottom(文本外框底線對齊) 

缺省值:middle

指定文字字體

FontAngle

設置斜體文字模式

有效值:normal(正常字體)、italic(斜體字)、oblique(斜角字)

缺省值:normal

FontName

設置文字字體名稱

有效值:用戶系統支持的字體名或者字符串FixedWidth。

缺省值為 Helvetica

FontSize

文字字體大小

有效值:結合字體單位的數值

缺省值為:10 points

FontUnits

設置屬性FontSize的單位

有效值:points (1=1/72英寸)normalized(把父對象坐標軸作為一單位長的一個整體;當改變坐標軸的尺寸時,系統會自動改變字體的大小)、inches (英寸)、Centimeters(厘米)、Pixels(像素)

缺省值:points

FontWeight

設置文字字體的粗細

有效值:light(細字體)、normal(正常字體)、demi(黑體字)、Bold(黑體字)

缺省值:normal

控制文字外觀

Clipping

設置坐標軸中矩形的剪輯模式

有效值:onoff

on:當文本超出坐標軸的矩形時,超出的部分不顯示;

off:當文本超出坐標軸的矩形時,超出的部分顯示。

缺省值:off

EraseMode

設置顯示與擦除文字的模式。這些模式對生成動畫系列與改進文字的顯示效果很有好處。

有效值:normal、none、 xor、   background

缺省值:normal

SelectionHighlight

設置選中文字是否突出顯示

有效值:onoff

缺省值:on

Visible

設置文字是否可見

有效值:onoff

缺省值:on

Color

設置文字顏色

有效的顏色值:ColorSpec

控制對文字對象的訪問

HandleVisibility

設置文字對象句柄對其他函數是否可見

有效值:oncallbackoff

缺省值:on

HitTest

設置文字對象能否成為當前對象(見圖形CurrentObject屬性)

有效值:onoff

缺省值:on

文字對象的一般信息

Children

文字對象的子對象(文字對象沒有子對象)

有效值:[](即空矩陣)

Parent

文字對象的父對象(通常為axes對象)

有效值:axes的句柄

Seleted

設置文字是否顯示出“選中”狀態

有效值:onoff

缺省值:off

Tag

設置用戶指定的標簽

有效值:任何字符串

缺省值:’’(即空字符串)

Type

設置圖形對象的類型(只讀類型)

有效值:字符串’text’

UserData

設置用戶指定數據

有效值:任何矩陣

缺省值:[](即空矩陣)

控制回調例行執行程序

BusyAction

設置如何處理對文字回調過程中斷的句柄

有效值:cancelqueue

缺省值:queue

ButtonDownFcn

設置當鼠標在文字上單擊時,程序做出的反應(即執行回調程序)

有效值:字符串

缺省值:'  '(空字符串)

CreateFcn

設置當文字被創建時,程序做出的反應(即執行的回調程序)

有效值:字符串

缺省值:'  '(空字符串)

DeleteFcn

設置當文字被刪除(通過關閉或刪除操作)時,程序做出的反應(即執行的回調程序)

有效值:字符串

缺省值:'  '(空字符串)

Interruptible

設置回調過程是否可中斷

有效值:onoff

缺省值:on(能中斷)

UIContextMenu

設置與文字相關的菜單項

有效值:用戶相關菜單句柄

     h = text(返回文字對象句柄的列向量,每一對象對應一句柄。該命令的其他使用形式中,將隨意地返回這個輸出參量。

7-23

   >>plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))

   >>text(pi,0,’Zeros Point’)

   >>grid on

圖形結果為圖7-23

 

 

 

命令 xlabelylabel

功能  給xy軸貼上標簽

用法  xlabel('string')、 ylabel(‘string’)  給當前軸對象中的xy軸貼標簽;注意:若再次執行xlabelylabel命令,則新的標簽會覆蓋舊的標簽。

      xlabel(fname)ylabel(fname) 先執行函數fname,其返回一個字符串,然后在xy軸旁邊顯示出來;

      xlabel(,'PropertyName',PropertyValue,)ylabel(…,’PropertyName’, PropertyValue)指定軸對象中的要控制的屬性名和要改變的屬性值,這些都是由xlabelylabel創建的text圖形對象的成對值;

      h = xlabel(…)、h = ylabel(…)返回作為標簽的text對象的句柄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM