sns.heatmap详解

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

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

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/285144.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-22 15:43
下一篇 2024-12-22 15:43

相关推荐

  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25

发表回复

登录后才能评论