千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > sns.heatmap详解

sns.heatmap详解

来源:千锋教育
发布人:xqq
时间: 2023-11-23 00:24:48 1700670288

一、sns.heatmap参数

sns.heatmap是一个数据可视化函数,用于绘制矩阵数据的热图。它有很多参数可以用于调整图形样式和呈现方式。这里介绍几个常用的参数:

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: 需要展示的数据,可以是DataFrame或numpy数组

2. cmap: 颜色映射表,设置热图的颜色主题。它可以是内置颜色映射表(如'coolwarm'、'viridis'、'mako'、'rocket'、'copper'等),也可以是自定义的颜色列表

3. annot: 是否显示每个单元格的数值

4. fmt: 数值格式,用于控制annot参数输出数值的格式

5. linewidths: 热图中每个矩形之间的间隔线宽度

二、sns.heatmap合并颜色带

热图中的颜色带用于表示数据值的大小,不同的颜色带代表不同的数据范围。有时候,可能需要将两个热图的颜色带合并为一个颜色带,以便进行比较。sns.heatmap提供了vmin和vmax参数,用于将不同数据范围内的颜色值映射到相同的颜色带上。

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个热图颜色带合并之前:

2个热图颜色带合并之后:

三、sns.heatmap函数

sns.heatmap函数可以接收一些关键字参数,用于控制热图的外观和响应式。例如,我们可以使用xticklabels和yticklabels参数来更改X和Y轴上的标签。

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函数主要用于可视化矩阵数据的热图,用不同的颜色表示数据的大小,颜色越亮则表示数据越大,颜色越暗则表示数据越小。

例如,设置颜色映射表为'coolwarm',则大于0的数值显示为红色,小于0的数值显示为蓝色,0的数值显示为中间的白色。

df = pd.DataFrame(np.random.randn(10, 10))

sns.heatmap(df, cmap='coolwarm', annot=True, fmt='.2f', linewidths=.5)

plt.show()

热图应用示例图:

五、sns.heatmap字体大小

sns.heatmap函数可以设置字体的大小,通过修改字体的大小,我们可以让热图更加美观,易于阅读。

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函数默认使用英文字母作为列名,但是有时候我们需要使用中文作为列名,这时候需要更改列名并设置xticklabels参数。

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中文标题

sns.heatmap函数可以设置热图的标题,根据热图的应用场景,设置对应的标题显得更为严谨。

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()

热图中文标题示例图:

八、sns.heatmap共用颜色条

如果在同一画布上绘制多个热图,可能需要共用相同的颜色条。sns.heatmap函数提供了cbar参数来实现。

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()

多个热图共用颜色条示例图:

九、sns.heatmap标记目标值

我们可以使用mask参数来标记矩阵的某些区域。例如,标记所有小于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()

热图标记目标值示例图:

十、sns.heatmap cmap选取

cmap是sns.heatmap函数中的一个参数,用于指定颜色映射表。不同的颜色映射表可以反映不同的数据特征,选择合适的颜色映射表非常重要。matplotlib提供了一些内置的颜色映射表,包括'viridis'、'plasma'、'inferno'、'magma'等,可以根据数据特点来选取合适的颜色映射表。

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()

不同颜色映射表的示例图:

tags: sns.heatmap
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT