熱圖(Heatmap)是一種用來顯示變數之間相關性或數據矩陣的視覺化工具。通過顏色強度的變化,熱圖可以幫助我們直觀地觀察不同變數之間的相關性或數據矩陣中各元素的大小關係。今天,我們將介紹熱圖的應用情境,並使用 Seaborn 和 Matplotlib 繪製熱圖,展示資料的相關性。
熱圖適合用來展示以下情境的資料:
首先,我們使用 Seaborn 繪製一個基本的相關性熱圖,來顯示 Iris 資料集中各個特徵之間的相關性。
# 計算相關性矩陣
correlation_matrix = iris_df.corr()
# 繪製基本相關性熱圖
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Heatmap of Iris Dataset Features')
plt.show()
這段程式碼會繪製一個基本的相關性熱圖,correlation_matrix
表示各特徵之間的相關性矩陣。annot=True
會在每個格子中標註相關係數值,cmap='coolwarm'
會使用冷暖色系來表示相關性強弱。
我們可以通過添加分組標籤來更好地展示不同特徵之間的分組情況。
# 設置分組標籤
row_colors = ['#FF9999' if label == 0 else '#66B3FF' if label == 1 else '#99FF99' for label in iris_df['target']]
# 繪製帶有分組標籤的熱圖
sns.clustermap(correlation_matrix, annot=True, cmap='coolwarm', row_colors=row_colors, col_colors=row_colors)
plt.title('Clustered Correlation Heatmap of Iris Dataset Features')
plt.show()
這段程式碼會繪製一個帶有分組標籤的熱圖,通過 clustermap()
函數可以自動對特徵進行分組,並使用 row_colors
和 col_colors
來表示不同群組的顏色。
有時候我們需要展示數據矩陣中的各個元素,可以使用 Seaborn 繪製一個數據矩陣的熱圖,來顯示不同數值之間的關係。
# 隨機生成數據矩陣
data_matrix = np.random.rand(10, 12) # 生成 10 行 12 列的隨機數據矩陣
# 繪製數據矩陣的熱圖
sns.heatmap(data_matrix, cmap='viridis', annot=False)
plt.title('Heatmap of Random Data Matrix')
plt.show()
這段程式碼生成了一個 10 行 12 列的隨機數據矩陣,並使用 heatmap()
函數繪製其熱圖。cmap='viridis'
會使用 Viridis 色系來顯示數據的大小。
我們可以使用 Pandas 的 pivot_table()
函數來創建數據透視表,並使用 Seaborn 進行熱圖可視化。這種方法適合展示多個變數之間的交叉分佈情況。
# 創建數據透視表,使用 target 作為分類標籤
pivot_table = iris_df.pivot_table(values='sepal length (cm)', index='target', aggfunc='mean')
# 繪製數據透視表的熱圖
sns.heatmap(pivot_table, annot=True, cmap='YlGnBu')
plt.title('Distribution of Sepal Length by Flower Species in the Iris Dataset')
plt.xlabel('Flower Species')
plt.ylabel('Sepal Length (cm)')
plt.show()
這段程式碼會根據 target_0
和 target_1
創建一個數據透視表,並繪製其熱圖,展示不同花卉種類的花萼長度分佈情況。
我們可以自定義熱圖的顏色和標註格式,使其更符合我們的需求和美觀。
# 自定義顏色和標註格式的相關性熱圖
sns.heatmap(correlation_matrix, annot=True, fmt='.2f', cmap='RdYlBu', linewidths=0.5, linecolor='white')
plt.title('Custom Correlation Heatmap of Iris Dataset Features')
plt.show()
這段程式碼設置了 fmt='.2f'
來限定標註數字的小數點位數,並使用 linewidths
和 linecolor
來控制每個格子的邊框樣式。
今天我們學習了如何使用 Seaborn 繪製熱圖,包括:
熱圖是一種強大的可視化工具,可以幫助我們快速了解資料中不同變數之間的關係和數據分佈情況。接下來,我們將學習如何進行資料標準化與正規化,為後續的分析做好準備。