全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

sns.heatmap详解

发布时间:2023-11-23 00:24:48
发布人:xqq

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

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

sns.heatmap

相关文章

linux重置dns命令,linux修改dns命令

linux重置dns命令,linux修改dns命令

2023-11-23
Xshell收费吗?详情解析

Xshell收费吗?详情解析

2023-11-23
Python数组添加元素操作

Python数组添加元素操作

2023-11-23
Idea多个项目放在一个窗口

Idea多个项目放在一个窗口

2023-11-23

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31