MATLAB 中的直方圖
- 在 MATLAB 中建立向量直方圖
- 在 MATLAB 中建立分類直方圖
- 在 MATLAB 中建立歸一化直方圖
- 在 MATLAB 中的同一圖形上繪製多個直方圖
- 在 MATLAB 中儲存直方圖
- MATLAB 中的雙變數直方圖
在本教程中,我們將討論如何使用 MATLAB 中的 histogram()
和 histogram2()
函式繪製給定資料的直方圖。
在 MATLAB 中建立向量直方圖
要建立給定向量的直方圖,可以在 MATLAB 中使用 histogram()
函式。例如,讓我們建立一個給定向量的直方圖。請參見下面的程式碼。
vector = randn(100,1);
HG = histogram(vector)
輸出:
HG =
Histogram with properties:
Data: [100x1 double]
Values: [2 18 29 31 17 3]
NumBins: 6
BinEdges: [-3 -2 -1 0 1 2 3]
BinWidth: 1
BinLimits: [-3 3]
Normalization: 'count'
FaceColor: 'auto'
EdgeColor: [0 0 0]
在上面的程式碼中,我們建立了隨機向量的直方圖。在輸出中,直方圖的屬性,我們可以更改這些屬性。例如,讓我們使用 FaceColor
屬性更改直方圖的前部顏色,使用 EdgeColor
屬性更改邊緣的顏色,並使用 NumBins
屬性更改 bin
的數量。請參見下面的程式碼。
vector = randn(100,1);
HG = histogram(vector);
HG.FaceColor = 'g';
HG.EdgeColor = 'r';
HG.NumBins = 10;
輸出:
直方圖的面部顏色更改為綠色,邊緣顏色更改為紅色,bin 的數量更改為 10。你還可以根據需要更改其他直方圖屬性。
在 MATLAB 中建立分類直方圖
你也可以使用 histogram()
函式建立分類直方圖。你可以在分類陣列中定義值,例如一些名稱等,並且必須為每個分類變數提供一個值,該值將在直方圖中顯示為高度。例如,讓我們建立三個類別變數的直方圖:Yes
,No
和 Not Sure
。請參見下面的程式碼。
Vector = [7 7 7 8 8 8 8 9 7 8 8 8 7 8 7 8 7 8 8 8];
Cat = categorical(Vector,[7 8 9],{'Yes','No','Not Sure'});
HG = histogram(Cat)
輸出:
在上面的程式碼中,我們建立了三個變數的分類直方圖。我們為每個變數分配了一個不同的值。例如,我們為變數 Yes
分配了值 7
,為變數 No
分配了值 8
,為變數 Not Sure
分配了 9
。在變數 vector
中將值 7
重複七次,這意味著變數 Yes
將顯示在高度為 7
的直方圖中,依此類推。你可以在直方圖中新增任意多個類別變數。
在 MATLAB 中建立歸一化直方圖
我們可以使用 histogram()
函式中的 Normalization
屬性對直方圖進行歸一化。例如,讓我們從隨機數建立直方圖,然後使用 Normalization
屬性對其進行歸一化。請參見下面的程式碼。
clc
vector = randn(100,1);
HG = histogram(vector,'Normalization','probability')
輸出:
使用概率歸一化對上述直方圖進行歸一化。你還可以使用其他歸一化,例如計數歸一化。
在 MATLAB 中的同一圖形上繪製多個直方圖
我們還可以使用 hold on
函式在同一圖形上繪製多個直方圖。例如,讓我們在同一張圖上繪製兩個直方圖。請參見下面的程式碼。
vector = randn(100,1);
HG1 = histogram(vector)
hold on
vector = 5+randn(100,1);
HG2 = histogram(vector)
輸出:
在上面的程式碼中,我們在同一張圖上繪製了兩個直方圖。你可以在同一幅圖上繪製任意多的圖,MATLAB 會自動為它們提供單獨的顏色。你還可以為每個直方圖指定所需的顏色。你還可以使用 legend()
函式將圖例新增到直方圖中,以將它們彼此分開。
在 MATLAB 中儲存直方圖
你可以使用 MATLAB 中的 savefig()
函式儲存直方圖,也可以使用 openfig()
函式載入儲存的直方圖。請參見下面的程式碼。
savefig('Hist.fig');
close gcf
histogram = openfig('Hist.fig');
在上面的程式碼中,Hist
是儲存直方圖的變數。檢視此連結以獲取更多資訊。
MATLAB 中的雙變數直方圖
如果要建立兩個變數的直方圖,則可以使用 histogram2()
函式。例如,讓我們繪製兩個向量的直方圖。請參見下面的程式碼。
vector1 = randn(100,1);
vector2 = randn(100,1);
HG = histogram2(vector1,vector2)
輸出:
在上面的程式碼中,我們從兩個向量繪製了一個二元直方圖。你還可以使用 colorbar
函式新增顏色條,該函式將根據分倉的高度為直方圖新增顏色。隨著分倉高度的增加,分倉的顏色會從較冷變熱,反之亦然。例如,讓我們在上面的二元直方圖中新增一個顏色條。請參見下面的程式碼。
vector1 = randn(100,1);
vector2 = randn(100,1);
HG = histogram2(vector1,vector2,[12 12],'FaceColor','flat')
colorbar
輸出:
你也可以使用 view()
函式更改直方圖的檢視。例如,讓我們將上述雙變數直方圖的檢視從 3D 更改為 2D。請參見下面的程式碼。
vector1 = randn(100,1);
vector2 = randn(100,1);
HG = histogram2(vector1,vector2,[12 12],'FaceColor','flat')
colorbar
view(2)
輸出:
你還可以使用與上述直方圖相同的功能和屬性來更改雙變數直方圖的其他屬性。例如,你可以使用 FaceColor
屬性更改前部顏色,使用 EdgeColor
屬性更改邊緣顏色,使用 NumBins
屬性更改容器的數量,並使用 Normalization
屬性進行歸一化,等等。你也可以儲存並使用 savefig()
和 openfig()
函式載入雙變數直方圖。檢視此連結以獲取更多資訊。