一、sns.heatmap參數(shù)
sns.heatmap是一個(gè)數(shù)據(jù)可視化函數(shù),用于繪制矩陣數(shù)據(jù)的熱圖。它有很多參數(shù)可以用于調(diào)整圖形樣式和呈現(xiàn)方式。這里介紹幾個(gè)常用的參數(shù):
import seaborn as sns
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 10))
sns.heatmap(df, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5)
1. data: 需要展示的數(shù)據(jù),可以是DataFrame或numpy數(shù)組
2. cmap: 顏色映射表,設(shè)置熱圖的顏色主題。它可以是內(nèi)置顏色映射表(如'coolwarm'、'viridis'、'mako'、'rocket'、'copper'等),也可以是自定義的顏色列表
3. annot: 是否顯示每個(gè)單元格的數(shù)值
4. fmt: 數(shù)值格式,用于控制annot參數(shù)輸出數(shù)值的格式
5. linewidths: 熱圖中每個(gè)矩形之間的間隔線寬度
二、sns.heatmap合并顏色帶
熱圖中的顏色帶用于表示數(shù)據(jù)值的大小,不同的顏色帶代表不同的數(shù)據(jù)范圍。有時(shí)候,可能需要將兩個(gè)熱圖的顏色帶合并為一個(gè)顏色帶,以便進(jìn)行比較。sns.heatmap提供了vmin和vmax參數(shù),用于將不同數(shù)據(jù)范圍內(nèi)的顏色值映射到相同的顏色帶上。
df1 = pd.DataFrame(np.random.randn(10, 10))
df2 = pd.DataFrame(np.random.randn(10, 10))
plt.figure(figsize=(8, 6))
plt.subplot(1, 2, 1)
sns.heatmap(df1, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5)
plt.subplot(1, 2, 2)
sns.heatmap(df2, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5, vmin=-1, vmax=1)
plt.show()
2個(gè)熱圖顏色帶合并之前:
2個(gè)熱圖顏色帶合并之后:
三、sns.heatmap函數(shù)
sns.heatmap函數(shù)可以接收一些關(guān)鍵字參數(shù),用于控制熱圖的外觀和響應(yīng)式。例如,我們可以使用xticklabels和yticklabels參數(shù)來(lái)更改X和Y軸上的標(biāo)簽。
df = pd.DataFrame(np.random.randn(10, 10), columns=[f'col{i}' for i in range(10)],
index=[f'row{i}' for i in range(10)])
sns.heatmap(df, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5, xticklabels=[f'col{i}' for i in range(10)],
yticklabels=[f'row{i}' for i in range(10)])
plt.show()
熱圖外觀控制示例圖:
四、sns.heatmap作用
sns.heatmap函數(shù)主要用于可視化矩陣數(shù)據(jù)的熱圖,用不同的顏色表示數(shù)據(jù)的大小,顏色越亮則表示數(shù)據(jù)越大,顏色越暗則表示數(shù)據(jù)越小。
例如,設(shè)置顏色映射表為'coolwarm',則大于0的數(shù)值顯示為紅色,小于0的數(shù)值顯示為藍(lán)色,0的數(shù)值顯示為中間的白色。
df = pd.DataFrame(np.random.randn(10, 10))
sns.heatmap(df, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5)
plt.show()
熱圖應(yīng)用示例圖:
五、sns.heatmap字體大小
sns.heatmap函數(shù)可以設(shè)置字體的大小,通過(guò)修改字體的大小,我們可以讓熱圖更加美觀,易于閱讀。
df = pd.DataFrame(np.random.randn(10, 10))
sns.heatmap(df, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5, annot_kws={'size': 12})
plt.show()
熱圖字體大小示例圖:
六、sns.heatmap中文列名
sns.heatmap函數(shù)默認(rèn)使用英文字母作為列名,但是有時(shí)候我們需要使用中文作為列名,這時(shí)候需要更改列名并設(shè)置xticklabels參數(shù)。
df = pd.DataFrame(np.random.randn(10, 10), columns=[f'列{i}' for i in range(10)])
sns.heatmap(df, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5,
xticklabels=df.columns, yticklabels=[f'行{i}' for i in range(10)],)
plt.show()
熱圖中文列名示例圖:
七、sns.heatmap中文標(biāo)題
sns.heatmap函數(shù)可以設(shè)置熱圖的標(biāo)題,根據(jù)熱圖的應(yīng)用場(chǎng)景,設(shè)置對(duì)應(yīng)的標(biāo)題顯得更為嚴(yán)謹(jǐn)。
df = pd.DataFrame(np.random.randn(10, 10), columns=[f'col{i}' for i in range(10)],
index=[f'row{i}' for i in range(10)])
plt.figure(figsize=(8, 6))
sns.heatmap(df, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5, xticklabels=[f'col{i}' for i in range(10)],
yticklabels=[f'row{i}' for i in range(10)])
plt.title('熱圖示例', fontsize=16)
plt.show()
熱圖中文標(biāo)題示例圖:
八、sns.heatmap共用顏色條
如果在同一畫(huà)布上繪制多個(gè)熱圖,可能需要共用相同的顏色條。sns.heatmap函數(shù)提供了cbar參數(shù)來(lái)實(shí)現(xiàn)。
df1 = pd.DataFrame(np.random.randn(10, 10))
df2 = pd.DataFrame(np.random.randn(10, 10))
plt.figure(figsize=(8, 6))
plt.subplot(1, 2, 1)
sns.heatmap(df1, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5)
plt.subplot(1, 2, 2)
sns.heatmap(df2, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5, cbar=False)
plt.subplots_adjust(wspace=0.5)
plt.show()
多個(gè)熱圖共用顏色條示例圖:
九、sns.heatmap標(biāo)記目標(biāo)值
我們可以使用mask參數(shù)來(lái)標(biāo)記矩陣的某些區(qū)域。例如,標(biāo)記所有小于0的值為紅色,大于等于0的值為綠色。
df = pd.DataFrame(np.random.randn(10, 10))
mask = np.zeros_like(df)
mask[df < 0] = True
sns.heatmap(df, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5, mask=mask)
plt.show()
熱圖標(biāo)記目標(biāo)值示例圖:
十、sns.heatmap cmap選取
cmap是sns.heatmap函數(shù)中的一個(gè)參數(shù),用于指定顏色映射表。不同的顏色映射表可以反映不同的數(shù)據(jù)特征,選擇合適的顏色映射表非常重要。matplotlib提供了一些內(nèi)置的顏色映射表,包括'viridis'、'plasma'、'inferno'、'magma'等,可以根據(jù)數(shù)據(jù)特點(diǎn)來(lái)選取合適的顏色映射表。
df = pd.DataFrame(np.random.randn(10, 10))
plt.figure(figsize=(8, 6))
plt.subplot(2, 2, 1)
sns.heatmap(df, cmap='viridis', annot=True, fmt='.2f', linewidths=.5)
plt.subplot(2, 2, 2)
sns.heatmap(df, cmap='plasma', annot=True, fmt='.2f', linewidths=.5)
plt.subplot(2, 2, 3)
sns.heatmap(df, cmap='inferno', annot=True, fmt='.2f', linewidths=.5)
plt.subplot(2, 2, 4)
sns.heatmap(df, cmap='magma', annot=True, fmt='.2f', linewidths=.5)
plt.subplots_adjust(wspace=0.5, hspace=0.5)
plt.show()
不同顏色映射表的示例圖: