1. 程式人生 > >Matlab---繪制柱狀圖

Matlab---繪制柱狀圖

bar 個數 分組 ogr hist 3.5 最大 相同 格式

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是你的數據。

Matlab---繪制柱狀圖