天天看點

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

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

指令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=1:m;若y為實數矩陣,則把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')

結合x和y,畫出點劃線(-.),在資料點(x,y)處畫出小圓圈(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。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理
MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

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

指令2  fplot 

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

                 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,…) 允許可選參數tol,n和LineSpec以任意組合方式輸入。

      [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,…)

      若想用預設的tol,n或LineSpec值,隻需将空矩陣([ ])傳遞給函數即可。

注意: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])

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理
MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

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

指令3  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

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

                圖7-5

指令4  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畫出線條,若其中隻有xn或yn為矩陣,另外一個為向量,行向量的維數等于矩陣的列數,列向量的維數等于矩陣的行數,則按向量的方向分解矩陣,再與向量結合,分别畫出線條。

      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。

指令5  semilogy

用法:參見semilogx指令。

指令6  fill

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

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

      fill(X,Y,ColorSpec) 用ColorSpec指定的顔色填充由x和y定義的多邊形

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

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

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

注意:

1. 若x或y是一矩陣,另一個是向量,向量應是維數與矩陣的行數相等的列向量或是維數等于矩陣列數的行向量時,函數fill将向量複制成與矩陣同型的矩陣。函數fill将矩陣x與y中列向量中的資料生成多邊形的頂點。

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

3. 若使用者用參量c指定所用顔色,指令fill按坐标軸屬性Clim的比例縮小c中的元素,之後,c成為引用目前色圖的下标矩陣。

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

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')

圖形結果為圖7-7。

指令7  zoom

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

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

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

用滑鼠拖出要放大的部分,系統将放大標明的區域。

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

      zoom out 将系統轉回非放大狀态,并将圖形恢複原狀。

      zoom reset 系統将記住目前圖形的放大狀态,作為放大狀态的設定值。以後使用zoom out或者是輕按兩下滑鼠時,互動式放大狀态打開,且圖形并不是傳回到原狀,而是傳回reset時的放大狀态。

      zoom 用于切換放大的狀态:on和off。

      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,輸入向量x為x-y平面上矩形定義域的矩形分割線在x軸的值,向量y為x-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

Y_2d =

    -2    -2

     3     3

     1     1

X_3d(:,:,1) =

X_3d(:,:,2) =

X_3d(:,:,3) =

Y_3d(:,:,1) =

Y_3d(:,:,2) =

Y_3d(:,:,3) =

Z_3d(:,:,1) =

     2     2

Z_3d(:,:,2) =

     5     5

Z_3d(:,:,3) =

指令1  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。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

指令2  bar

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

用法  bar(Y) 若y為向量,則分别顯示每個分量的高度,橫坐标為1到length(y);若y為矩陣,則bar把y分解成行向量,再分别畫出,橫坐标為1到size(y,1),即矩陣的行數。

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

      bar(…,width) 設定條形的相對寬度和控制在一組内條形的間距。預設值為0.8,是以,如果使用者沒有指定x,則同一組内的條形有很小的間距,若設定width為1,則同一組内的條形互相接觸。

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

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

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

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

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

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

例7-9

x = -2.9:0.2:2.9;

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

colormap gray

圖形結果為圖7-9。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

例7-10

subplot(2,2,4)

bar(Y,1.5)

title 'Width = 1.5'

圖形結果為圖7-10。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

指令3  barh

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

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

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

      barh(…,width) 設定條形的相對寬度和控制在一組内條形的間距。預設值為0.8,是以,如果使用者沒有指定x,則同一組内的條形有很小的間距,若設定width為1,則同一組内的條形互相接觸。

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

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

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

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

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

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

例7-11

>>X = 1:.5:5;

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

>>barh(Y,'stack')

圖形結果為圖7-11。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

指令4  compass

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

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

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

      compass(…,LineSpec) 用參量LineSpec指定箭頭圖的線型、标記符号、顔色等屬性。

      h = compass(…) 傳回line對象的句柄給h。

例7-12

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

  compass(Z)

圖形結果為圖7-12。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

指令5  comet

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

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

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

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

例7-13

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

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

>>comet(x,y);

圖形結果為圖7-13。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

附:擦除模式(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(i,j)、對稱誤差棒于曲面點(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;

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

>>errorbar(X,Y,E)

圖形結果為圖7-14。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

指令7  feather

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

用法  feather(U,V) 顯示由參量向量u與v确定的向量,其中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。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

指令8  hist

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

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

      n = hist(Y,x) 參量x為向量,把y中元素放到m(m=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。

指令9  histc

功能  直方圖記數

用法  n = histc(x,edges) 統計向量x中、落入向量edges(元素必須為單調的非減的)各個元素之間的元素個數。輸出參量n為一與向量edges同維的向量。其中若有edges(k)>=x(i)>=edges(k+1),則n(k)增加1。X中超出向量edges規定的範圍的元素将不被統計。參量edges中可使用-inf與inf,用于包括向量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(…) 傳回向量tout與rout,可以用polar(tout,rout)畫出圖形。該指令沒有畫任何的圖形。

例7-17

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

   >>rose(theta)

圖形結果為圖7-17。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

指令11  stairs

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

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

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

     stairs(…,LineSpec) 用參數LineSpec指定的線型、标記符号和顔色畫階梯圖。

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

     [xb,yb] = stairs(X,Y) 該指令沒有畫圖,而是傳回可以用指令plot畫出參量x,y的階梯圖的向量xb與yb。

例7-18

>>x = 0:.25:10;

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

圖形結果為圖7-18。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

指令12  stem

功能  畫二維離散資料的柄形圖。該圖用線條顯示資料點與x軸的距離,一小圓圈(預設标記)或用指定的其他标記符号與線條相連,在y軸上标記資料點的值。

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

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

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

      stem(…,LineSpec) 用參數LineSpec指定線型,标記符号和柄圖末端的小圓圈的顔色畫柄圖。

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

例7-19

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

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

圖形結果為圖7-19。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

指令13  stem3

功能  畫三維離散資料的柄形圖。該圖用一線段顯示資料離開xy平面的高度,線上段的末端用一小圓圈(預設記号)或其他的标記符号表示資料的高度。

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

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

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

      stem3(…,LineSpec) 指定線型,标記符号和末端小圓圈的顔色。

      h = stem3(…) 傳回柄形圖的line圖形對象句柄。

例7-20

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

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

圖形結果為圖7-20。

MATLAB繪圖與圖形處理(1)第7章  繪圖與圖形處理

指令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。

指令1  grid

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

用法  grid on 給目前的坐标軸增加分隔線。

      grid off 從目前的坐标軸中去掉分隔線。

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

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

指令2  gtext

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

用法  gtext('string') 當光标位于一個圖形視窗内時,等待使用者單擊滑鼠或鍵盤。若按下滑鼠或鍵盤,則在光标的位置放置給定的文字“string”

      h = gtext('string') 當使用者在滑鼠指定的位置放置文字“string”後,傳回一個text圖形對象句柄給h。

指令3  legend

功能  在圖形上添加圖例。該指令對有多種圖形對象類型(線條圖,條形圖,餅形圖等)的視窗中顯示一個圖例。對于每一線條,圖例會在使用者給定的文字标簽旁顯示線條的線型,标記符号和顔色等。當所畫的是區域(patch或surface對象)時,圖例會在文字旁顯示表面顔色。Matlab在一個坐标軸中僅僅顯示一個圖例。圖例的位置有幾個因素決定,像遮擋的對象等,使用者可以用滑鼠拖動圖例到恰當的位置,輕按兩下标簽可以進入标簽編輯狀态。

用法  legend('string1','string2',…) 用指定的文字string在目前坐标軸中對所給資料的每一部分顯示一個圖例。

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

      legend(string_matrix) 用字元矩陣參量string

繼續閱讀