直方圖(Histogram)是一種展示數值資料分佈情況的圖表,它能夠通過將資料分成多個區間來顯示每個區間內的資料數量,這對於了解資料的集中趨勢、分佈範圍和異常值非常有幫助。今天,我們將介紹直方圖的應用場景,並使用 Matplotlib 和 Seaborn 繪製直方圖。
用昨天plot的檔案,全部程式都要先跑一遍
直方圖適合用來展示以下情境的資料:
首先,我們使用 Matplotlib 繪製一個簡單的直方圖,來顯示花瓣長度的分佈情況。
# 繪製花瓣長度的直方圖
plt.hist(iris_df['petal length (cm)'], bins=10, color='skyblue', edgecolor='black')
plt.title('Histogram of Petal Length Distribution')
plt.xlabel('Petal Length (cm)')
plt.ylabel('Frequency')
plt.show()
這段程式碼會繪製一個直方圖,將花瓣長度分成 10 個區間(bins=10
),並顯示每個區間內的資料數量。
接下來,我們使用 Seaborn 繪製一個更美觀的直方圖。Seaborn 提供了 histplot()
函數,可以更加靈活地控制直方圖的顯示效果。
sns.histplot(iris_df['petal length (cm)'], bins=10, kde=True, color='orange')
plt.title('Histogram of Petal Length Distribution with KDE')
plt.xlabel('Petal Length (cm)')
plt.ylabel('Frequency')
plt.show()
在這段程式碼中,我們設定 kde=True
,這樣可以在直方圖上加上核密度估計(KDE)曲線,用來表示資料的分佈情況。
有時候,我們需要比較不同群組之間的資料分佈。可以使用 hue
參數來繪製分組直方圖,顯示不同花卉種類的花萼長度分佈。
# 使用 Seaborn 繪製分組直方圖
sns.histplot(data=iris_df, x='sepal length (cm)', hue='target', bins=10, kde=True, multiple='stack')
plt.title('Histogram of Sepal Length Distribution by Flower Species')
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Frequency')
plt.show()
在這段程式碼中,我們通過 hue='target_0'
來區分不同花卉種類的資料分佈,multiple='stack'
會將不同花卉種類的分佈疊加在一起。
累積直方圖(Cumulative Histogram)顯示的是累積頻數,適合用來觀察某個值以下的資料占比。可以通過 cumulative=True
來實現。
# 使用 Matplotlib 繪製累積直方圖
plt.hist(iris_df['petal length (cm)'], bins=10, cumulative=True, color='green', edgecolor='black')
plt.title('Cumulative Histogram of Petal Length')
plt.xlabel('Petal Length (cm)')
plt.ylabel('Cumulative Frequency')
plt.show()
這段程式碼會繪製一個累積直方圖,顯示不同花瓣長度以下的累積資料數量。
我們可以通過調整直方圖的外觀,使其更加美觀和易於理解。例如,可以調整顏色、邊界、透明度等屬性。
# 使用 Seaborn 繪製調整外觀的直方圖
sns.histplot(iris_df['sepal width (cm)'], bins=10, color='purple', alpha=0.6, edgecolor='black')
plt.title('Histogram of Sepal Width with Customized Appearance')
plt.xlabel('Sepal Width (cm)')
plt.ylabel('Frequency')
plt.show()
這段程式碼設置了 alpha=0.6
來調整透明度,讓直方圖更加美觀。
今天我們學習了如何使用 Matplotlib 和 Seaborn 繪製直方圖,包括:
直方圖能夠幫助我們快速了解資料的分佈情況,發現資料中的集中趨勢和異常值。接下來,我們將學習如何使用面積圖來展示資料的累積變化趨勢。