iT邦幫忙

2024 iThome 鐵人賽

DAY 25
0
Python

30天Python資料分析挑戰:從基礎到視覺化系列 第 25

Day 25: 熱圖 (Heatmap) 的應用與實作

  • 分享至 

  • xImage
  •  

Day 25: 熱圖 (Heatmap) 的應用與實作

熱圖(Heatmap)是一種用來顯示變數之間相關性或數據矩陣的視覺化工具。通過顏色強度的變化,熱圖可以幫助我們直觀地觀察不同變數之間的相關性或數據矩陣中各元素的大小關係。今天,我們將介紹熱圖的應用情境,並使用 Seaborn 和 Matplotlib 繪製熱圖,展示資料的相關性。

1. 熱圖的應用情境

熱圖適合用來展示以下情境的資料:

  • 變數之間的相關性:顯示不同變數之間的相關性矩陣,例如檢查股票之間的相關性。
  • 數據矩陣的可視化:例如顯示不同地區的氣溫變化、不同產品的銷售數據。
  • 分類資料的關聯分析:顯示不同分類資料之間的關聯性或差異性。

2. 使用 Seaborn 繪製基本相關性熱圖

首先,我們使用 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()

https://ithelp.ithome.com.tw/upload/images/20241009/20140380JB6lXwJF7x.jpg
這段程式碼會繪製一個基本的相關性熱圖,correlation_matrix 表示各特徵之間的相關性矩陣。annot=True 會在每個格子中標註相關係數值,cmap='coolwarm' 會使用冷暖色系來表示相關性強弱。

3. 使用 Seaborn 繪製帶有分組標籤的熱圖

我們可以通過添加分組標籤來更好地展示不同特徵之間的分組情況。

# 設置分組標籤
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()

https://ithelp.ithome.com.tw/upload/images/20241009/20140380vElaQVgdvG.png
這段程式碼會繪製一個帶有分組標籤的熱圖,通過 clustermap() 函數可以自動對特徵進行分組,並使用 row_colorscol_colors 來表示不同群組的顏色。

4. 繪製數據矩陣的熱圖

有時候我們需要展示數據矩陣中的各個元素,可以使用 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()

https://ithelp.ithome.com.tw/upload/images/20241009/20140380QzbGqLx3I9.jpg
這段程式碼生成了一個 10 行 12 列的隨機數據矩陣,並使用 heatmap() 函數繪製其熱圖。cmap='viridis' 會使用 Viridis 色系來顯示數據的大小。

5. 使用數據透視表進行熱圖可視化

我們可以使用 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()

https://ithelp.ithome.com.tw/upload/images/20241009/20140380PCuzd1mMYl.jpg

這段程式碼會根據 target_0target_1 創建一個數據透視表,並繪製其熱圖,展示不同花卉種類的花萼長度分佈情況。

6. 自定義顏色和標註格式

我們可以自定義熱圖的顏色和標註格式,使其更符合我們的需求和美觀。

# 自定義顏色和標註格式的相關性熱圖
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()

https://ithelp.ithome.com.tw/upload/images/20241009/20140380f4koWxF6rN.jpg
這段程式碼設置了 fmt='.2f' 來限定標註數字的小數點位數,並使用 linewidthslinecolor 來控制每個格子的邊框樣式。

7. 小結

今天我們學習了如何使用 Seaborn 繪製熱圖,包括:

  1. 基本的相關性熱圖,用來顯示變數之間的相關性。
  2. 帶有分組標籤的熱圖,展示分組間的關係。
  3. 數據矩陣熱圖,用來顯示矩陣中每個元素的大小。
  4. 使用數據透視表進行熱圖可視化,展示多變數交叉分佈。
  5. 自定義顏色和標註格式,使熱圖更美觀和實用。

熱圖是一種強大的可視化工具,可以幫助我們快速了解資料中不同變數之間的關係和數據分佈情況。接下來,我們將學習如何進行資料標準化與正規化,為後續的分析做好準備。


上一篇
Day 24: 箱型圖 (Box Plot) 的應用與實作
下一篇
Day 26: 資料標準化與正規化
系列文
30天Python資料分析挑戰:從基礎到視覺化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言