Matlab---繪制柱狀圖


Matlab---繪制柱狀圖

目錄:

  1. hist()函數
  2. histc( )函數
  3. bar()函數

 

正文:

注意區分:頻率、頻數分布直方圖。

一、             hist()函數

hist():實現的頻數直方圖,"hist" is short for "Histogram(直方圖、柱狀圖)",繪制直方圖,以數值中心為分界條件。

1N = hist(Y),將向量Y的元素平均分到十個等間隔的容器中,並且返回每個容器的元素個數,可以理解為下面中的hist(x,10)。如果Y是一個矩陣,hist指令逐列元素操作。Y為向量的情形見例1,為矩陣的情形見例3。

例1. Y為向量時,執行指令

>>  Y = [1, 2, 2, 5, 6, 6, 8, 11];

>> hist(Y)

Y最大為11,最小為1,故而將區間[1,11]均分為10分,分別為[1, 2], (2,3], (3,4], (4,5], (5,6], (6,7], (7,8], (8,9], (9,10], (10,11].

 

 

例2.當Y是矩陣時的情況。執行指令:

>>  Y = [1,2.5,2.1;3,3.5,6];

>> hist(Y)

注意,Y為矩陣:

    1.0000    2.5000    2.1000

    3.0000    3.5000    6.0000

Y有三列元素,逐列元素產生對應的直方圖。得到

 

觀察此圖和矩陣Y,由於Y的元素最大為1,最小為6,故而將區間[1,6]以0.5的間隔划分為10個等長的子區間作為10個容器去容納數據。圖中有三種顏色的方條:藍色,綠色和紅色,分別對應Y中的第1,2,3列元素。如第一列元素為1和3,故而區間[1,1.5]和(2.5,3]中有藍色方條。

 

2N = hist(Y, m)M是一個標量,表明使用m個箱子。(就像上面所說的如果不指定,默認是10個箱子)。格式[a,b]=hist(x,n) :其中x是一維向量,函數功能是將x中的最小和最大值之間的區間等分n份,橫坐標是x值,縱坐標是該值的個數。返回的a是落在該區間內的個數,b是該區間的中心線位置坐標。

例1.執行指令

>> Y = [1, 1, 1.3, 2.6, 3, 3.4, 5, 5.9, 6, 6,1, 7, 7,2];

>>  hist(Y, 6)

 

 

3N = hist(Y,X)X是向量,以X中的元素為區間中心可獲得一系列區間,執行命令可獲得Y在這些區間中的分布情況。

y=[1.1 2.2 3.3];x=[2 3 4];

[h,xout]=hist(y,x)

返回:h=[2 1 0];

xout=[2 3 4];

第一個分組是(-inf,2.5],第二個是(2.5,3.5],第三個是(3.5,inf)

 

參考幫助文件中hist(Y,x)的說明:

n = hist(Y, x),其中x是一個向量,返回x的長度個以x的元素為中心的容器內的,Y的分布情況。例如,如果x是一個5元素的向量,返回Y在以x-軸上x的元素為中心的,5個容器內數據直方分布。注意:如果更需要指定容器邊界而不是中心,可以使用histc。

[n,xout] = hist(...) 返回包含頻數和容器位置的向量n和xout。可以使bar(xout,n)繪制直方圖。

那么在上例中,x長度3,以x中元素為每個容器的中心,故返回值xout==x。

 

二、histc( )函數

如果需要制定數值邊界而不是中心,可以使用histc。

hist()函數的作用:繪制直方圖,以數值中心為分界條件;

histc()函數制定數值邊界為分界條件,histc(x,edges):落入edges元素之間的x值的個數。

例如1:histc以 a=[1 2 3 4 5 6 7 8 9 0 ],  edges=1:2:7。

[n, bin]=histc(x, edges)

返回n=[2 2 2 1],

bin=[ 1  1  2  2  3  3  4  0  0  0]。

分析:

edges=1:2:7即總共有三個數值分界,分別為1<=x<3, 3<=x<5, 5<=x<7,

n(1)=2表示a中落在第一個范圍的數總共有兩個,1和2;

n(2)=2表示a中落在第二個范圍的數總共有兩個,3和4;

n(3)=2表示a中落在第三個范圍的數總共有兩個,5和6;

n(4)=1表示a中的值等於edges最后一個值7的個數為1。

bin的值為a中的值分別在edges的哪個范圍中(1就是在edges的第一個空中),若不在edges范圍中,則返回0。

 

例如2:

>> a=[1 2 3 4 5]

>> h向量:h=1:1:7

>> histc(a,h)

ans =

     1     1     1     1     1     0     0

 

例如3:

>> a為矩陣矩陣:a=[1 2 3;4 2 6;1 5 8]

a =

     1     2     3

     4     2     6

     1     5     8

>> h矢量不變:h=1:1:7

h =

     1     2     3     4     5     6     7

>> histc(a,h)

ans =

     2     0     0     分別對應於第1,2,3列中 大於等於1且小於2的矩陣元素

     0     2     0     分別對應於第1,2,3列中 大於等於2且小於3的矩陣元素

     0     0     1     分別對應於第1,2,3列中 大於等於3且小於4的矩陣元素

     1     0     0     分別對應於第1,2,3列中 大於等於4且小於5的矩陣元素

     0     1     0     分別對應於第1,2,3列中 大於等於5且小於6的矩陣元素

     0     0     1     分別對應於第1,2,3列中 大於等於6且小於7的矩陣元素

     0     0     0     分別對應於第1,2,3列中 大於等於7且小於8的矩陣元素

 

三、             bar()函數

對於bar函數的使用一般格式如下:bar(x,y) 其中x必須是嚴格遞增的且一維向量x和一維向量y長度相同。以一維向量x的值為x坐標,對應的y為y坐標畫直方圖。

[n,xout] = hist(...)返回n和xout,包含有數目頻率和間隔位置。可以使用bar(xout, n)來繪制直方圖。

注意:[n,xout] = hist(...)格式不輸出直方圖,hist(...)才可以輸出的直方圖。

 

其他的,histfit(x,n)可直接給出直方圖的擬合曲線,n是直方圖的的區間數,x是你的數據。

目錄:

  1. hist()函數
  2. histc( )函數
  3. bar()函數

 

正文:

注意區分:頻率、頻數分布直方圖。

一、             hist()函數

hist():實現的頻數直方圖,"hist" is short for "Histogram(直方圖、柱狀圖)",繪制直方圖,以數值中心為分界條件。

1N = hist(Y),將向量Y的元素平均分到十個等間隔的容器中,並且返回每個容器的元素個數,可以理解為下面中的hist(x,10)。如果Y是一個矩陣,hist指令逐列元素操作。Y為向量的情形見例1,為矩陣的情形見例3。

例1. Y為向量時,執行指令

>>  Y = [1, 2, 2, 5, 6, 6, 8, 11];

>> hist(Y)

Y最大為11,最小為1,故而將區間[1,11]均分為10分,分別為[1, 2], (2,3], (3,4], (4,5], (5,6], (6,7], (7,8], (8,9], (9,10], (10,11].

 

 

例2.當Y是矩陣時的情況。執行指令:

>>  Y = [1,2.5,2.1;3,3.5,6];

>> hist(Y)

注意,Y為矩陣:

    1.0000    2.5000    2.1000

    3.0000    3.5000    6.0000

Y有三列元素,逐列元素產生對應的直方圖。得到

 

觀察此圖和矩陣Y,由於Y的元素最大為1,最小為6,故而將區間[1,6]以0.5的間隔划分為10個等長的子區間作為10個容器去容納數據。圖中有三種顏色的方條:藍色,綠色和紅色,分別對應Y中的第1,2,3列元素。如第一列元素為1和3,故而區間[1,1.5]和(2.5,3]中有藍色方條。

 

2N = hist(Y, m)M是一個標量,表明使用m個箱子。(就像上面所說的如果不指定,默認是10個箱子)。格式[a,b]=hist(x,n) :其中x是一維向量,函數功能是將x中的最小和最大值之間的區間等分n份,橫坐標是x值,縱坐標是該值的個數。返回的a是落在該區間內的個數,b是該區間的中心線位置坐標。

例1.執行指令

>> Y = [1, 1, 1.3, 2.6, 3, 3.4, 5, 5.9, 6, 6,1, 7, 7,2];

>>  hist(Y, 6)

 

 

3N = hist(Y,X)X是向量,以X中的元素為區間中心可獲得一系列區間,執行命令可獲得Y在這些區間中的分布情況。

y=[1.1 2.2 3.3];x=[2 3 4];

[h,xout]=hist(y,x)

返回:h=[2 1 0];

xout=[2 3 4];

第一個分組是(-inf,2.5],第二個是(2.5,3.5],第三個是(3.5,inf)

 

參考幫助文件中hist(Y,x)的說明:

n = hist(Y, x),其中x是一個向量,返回x的長度個以x的元素為中心的容器內的,Y的分布情況。例如,如果x是一個5元素的向量,返回Y在以x-軸上x的元素為中心的,5個容器內數據直方分布。注意:如果更需要指定容器邊界而不是中心,可以使用histc。

[n,xout] = hist(...) 返回包含頻數和容器位置的向量n和xout。可以使bar(xout,n)繪制直方圖。

那么在上例中,x長度3,以x中元素為每個容器的中心,故返回值xout==x。

 

二、histc( )函數

如果需要制定數值邊界而不是中心,可以使用histc。

hist()函數的作用:繪制直方圖,以數值中心為分界條件;

histc()函數制定數值邊界為分界條件,histc(x,edges):落入edges元素之間的x值的個數。

例如1:histc以 a=[1 2 3 4 5 6 7 8 9 0 ],  edges=1:2:7。

[n, bin]=histc(x, edges)

返回n=[2 2 2 1],

bin=[ 1  1  2  2  3  3  4  0  0  0]。

分析:

edges=1:2:7即總共有三個數值分界,分別為1<=x<3, 3<=x<5, 5<=x<7,

n(1)=2表示a中落在第一個范圍的數總共有兩個,1和2;

n(2)=2表示a中落在第二個范圍的數總共有兩個,3和4;

n(3)=2表示a中落在第三個范圍的數總共有兩個,5和6;

n(4)=1表示a中的值等於edges最后一個值7的個數為1。

bin的值為a中的值分別在edges的哪個范圍中(1就是在edges的第一個空中),若不在edges范圍中,則返回0。

 

例如2:

>> a=[1 2 3 4 5]

>> h向量:h=1:1:7

>> histc(a,h)

ans =

     1     1     1     1     1     0     0

 

例如3:

>> a為矩陣矩陣:a=[1 2 3;4 2 6;1 5 8]

a =

     1     2     3

     4     2     6

     1     5     8

>> h矢量不變:h=1:1:7

h =

     1     2     3     4     5     6     7

>> histc(a,h)

ans =

     2     0     0     分別對應於第1,2,3列中 大於等於1且小於2的矩陣元素

     0     2     0     分別對應於第1,2,3列中 大於等於2且小於3的矩陣元素

     0     0     1     分別對應於第1,2,3列中 大於等於3且小於4的矩陣元素

     1     0     0     分別對應於第1,2,3列中 大於等於4且小於5的矩陣元素

     0     1     0     分別對應於第1,2,3列中 大於等於5且小於6的矩陣元素

     0     0     1     分別對應於第1,2,3列中 大於等於6且小於7的矩陣元素

     0     0     0     分別對應於第1,2,3列中 大於等於7且小於8的矩陣元素

 

三、             bar()函數

對於bar函數的使用一般格式如下:bar(x,y) 其中x必須是嚴格遞增的且一維向量x和一維向量y長度相同。以一維向量x的值為x坐標,對應的y為y坐標畫直方圖。

[n,xout] = hist(...)返回n和xout,包含有數目頻率和間隔位置。可以使用bar(xout, n)來繪制直方圖。

注意:[n,xout] = hist(...)格式不輸出直方圖,hist(...)才可以輸出的直方圖。

 

其他的,histfit(x,n)可直接給出直方圖的擬合曲線,n是直方圖的的區間數,x是你的數據。


免責聲明!

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



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