如何在 Matplotlib 中繪製資料列表的直方圖

Suraj Joshi 2020年11月7日
如何在 Matplotlib 中繪製資料列表的直方圖

我們可以使用 plt.hist() 方法從資料列表中繪製直方圖。

plt.hist() 方法的語法

matplotlib.pyplot.hist(x, 
                        bins=None, 
                        range=None, 
                        density=False, 
                        weights=None, 
                        cumulative=False, 
                        bottom=None, 
                        histtype='bar', 
                        align='mid', 
                        orientation='vertical', 
                        rwidth=None, 
                        log=False, 
                        color=None, 
                        label=None, 
                        stacked=False, *, 
                        data=None, 
                        **kwargs)

示例:從資料列表中使用 Matplotlib 繪製直方圖

import matplotlib.pyplot as plt

data = [3,4,2,3,4,5,4,7,8,5,4,6,2,1,0,9,7,6,6,5,4]

n, bins, patches=plt.hist(data)
plt.xlabel("Values")
plt.ylabel("Frequency")
plt.title("Histogram")
plt.show()

輸出:

Matplotlib 中的直方圖,帶有預設的 bins

在這裡,我們在一個列表 data 中有數值。我們將這個列表傳入 plt.hist() 命令,從值列表中生成一個直方圖。plt.hist() 方法會返回二進位制的頻率、二進位制的端點以及用於建立直方圖的補丁列表。

在本例中,我們沒有設定 bins 引數的值。預設情況下,bins 的值是 10,所以指令碼會從 10 個 bins 的資料列表中建立直方圖。

此外,我們可以在製作直方圖時使用 bins 命令控制直方塊的數量。

import matplotlib.pyplot as plt

data = [3,4,2,3,4,5,4,7,8,5,4,6,2,1,0,9,7,6,6,5,4]
n, bins, patches=plt.hist(data,bins=20)
plt.xlabel("Values")
plt.ylabel("Frequency")
plt.title("Histogram with 20 bins")
plt.show()

輸出:

在 Matplotlib 中設定直方圖中的直方塊數量

這個過程顯示了由 20 個直方塊組成的直方圖,這是平均劃分整個列表值範圍的結果。

預設情況下,density 引數的值被設定為 False;這意味著我們在直方圖中得到每個 bin 的精確計數的圖。如果我們想讓列表中每個 bin 的概率密度圖,我們需要將 density 設定為 True。如果 densityTrue,直方圖下的區域積分為 1

import matplotlib.pyplot as plt

data = [3,4,2,3,4,5,4,7,8,5,4,6,2,1,0,9,7,6,6,5,4]
n, bins, patches=plt.hist(data,bins=20,density=True)
plt.xlabel("Weight")
plt.ylabel("Probability")
plt.title("Histogram with Probability Plot")
plt.show()

輸出:

直方圖與 Matplotlib 中的概率圖

現在我們可以使用 color 引數設定直方圖的顏色。

import matplotlib.pyplot as plt

data = [3,4,2,3,4,5,4,7,8,5,4,6,2,1,0,9,7,6,6,5,4]
n, bins, patches=plt.hist(data,bins=20,density=True,color='red')
plt.xlabel("Weight")
plt.ylabel("Probability")
plt.title("Red Histogram Plot")
plt.show()

輸出:

Matplotlib 中的紅色直方圖

此方法生成紅色的直方圖。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相關文章 - Matplotlib Visualizations