一文總結(jié)Python繪制的10種熱力圖
共 3103字,需瀏覽 7分鐘
·
2024-05-01 07:53
你好,我是郭震
首先祝你五一快樂!
今天這篇匯總,Python繪制熱力圖,重點聚焦在不同樣式的熱力圖上。
使用seaborn庫,它是一個基于Matplotlib的數(shù)據(jù)可視化庫,它提供了一種高級接口來繪制吸引人的統(tǒng)計圖形。
數(shù)據(jù)準備階段,代碼如下,設(shè)置隨機種子,確保每次運行數(shù)據(jù)一致。
# 設(shè)置隨機種子
np.random.seed(42)
data = np.random.rand(10, 12)
1 coolwarm樣式
annot=True:不顯示每個單元格的數(shù)據(jù)值
# 創(chuàng)建熱力圖
plt.figure(figsize=(10, 8))
sns.heatmap(data, annot=False, cmap='coolwarm')
plt.title('Seaborn Heatmap Example')
plt.show()
熱力圖如下:
2 viridis樣式
其他代碼與1相同,僅有一個cmap參數(shù)調(diào)整:
sns.heatmap(data, annot=False, cmap='viridis')
熱力圖如下:
3 plasma樣式
其他代碼與1相同,僅有一個cmap參數(shù)調(diào)整:
sns.heatmap(data, annot=False, cmap='plasma')
4 spring樣式
sns.heatmap(data, annot=False, cmap='spring')
5 winter樣式
sns.heatmap(data, annot=False, cmap='winter')
6 自定義顏色樣式
# 創(chuàng)建自定義顏色映射
colors = ["blue", "green", "red"]
cmap = LinearSegmentedColormap.from_list("mycmap", colors)
# 數(shù)據(jù)
np.random.seed(42)
data = np.random.rand(10, 12)
# 繪制熱力圖
plt.figure(figsize=(8, 6))
sns.heatmap(data, cmap=cmap, annot=False)
plt.title('Custom Colormap Heatmap')
plt.show()
7 添加注解
只需改變下面一行代碼:
sns.heatmap(data, cmap=cmap, annot=True)
8 掩碼顯示
只顯示大于0.7的顏色塊:
# 創(chuàng)建一個掩碼,只顯示大于0.7的值
mask = data < 0.7
plt.figure(figsize=(8, 6))
sns.heatmap(data, mask=mask, cmap='viridis', annot=False)
plt.title('Masked Heatmap for Values > 0.7')
plt.show()
9 小于某值顯示特定顏色
# 'lightgrey'用于小于0.7的值,'viridis'用于大于等于0.7的值
colors = ["lightgrey"] + sns.color_palette("viridis", as_cmap=True)(np.linspace(0, 1, 256)).tolist()
cmap = LinearSegmentedColormap.from_list("custom_cmap", colors)
norm = plt.Normalize(0.7, 1)
10 多熱力圖
# 定義顏色映射
norm = plt.Normalize(0.7, 1)
# 創(chuàng)建圖和子圖網(wǎng)格
fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(12, 10))
# 繪制熱力圖
sns.heatmap(data1, cmap='coolwarm', norm=norm, annot=False, ax=axs[0, 0], cbar=False)
sns.heatmap(data2, cmap='viridis', norm=norm, annot=False, ax=axs[0, 1], cbar=False)
sns.heatmap(data3, cmap='plasma', norm=norm, annot=False, ax=axs[1, 0], cbar=False)
sns.heatmap(data4, cmap='spring', norm=norm, annot=False, ax=axs[1, 1], cbar=False)
# 設(shè)置每個子圖的標題
axs[0, 0].set_title('Heatmap 1')
axs[0, 1].set_title('Heatmap 2')
axs[1, 0].set_title('Heatmap 3')
axs[1, 1].set_title('Heatmap 4')
# 調(diào)整布局
plt.tight_layout()
plt.show()
以上,希望對你有幫助。
評論
圖片
表情
