科研作图-heatmap(一)

1.简介
在科研中有很多地方为了可解释给审稿人提供了热图,便于知道深度学习中到底是哪部分在起作用,或者是在机器学习中分析不同的特征之间是否存在相关性?存在多大的相关性;或者是直观的展示场景热力图…总之,用处很多,我正好现在也需要用,就先总结下:绘制HeatMap的库有很多,这里只介绍两个,一个是seaborn.heatmap与pyheatmap.heatmap.
2.seaborn.heatmap使用方法

seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)

首先看一下官方给的函数,参数解释如下:

  • data:矩形数据集 可以强制转换为ndarray格式数据的2维数据集。如果提供了Pandas DataFrame数据,索引/列信息将用于标记列和行。
  • vmin, vmax:浮点型数据,可选参数。这代表了色彩映射的值最小最大值.
  • cmap:matplotlib 颜色条名称或者对象,或者是颜色列表,可选参数。从数据值到颜色空间的映射。 如果没有提供,默认值将取决于是否设置了“center”。
  • center:浮点数,可选参数。绘制有色数据时将色彩映射居中的值。 如果没有指定,则使用此参数将更改默认的cmap。
  • robust:布尔值,可选参数。如果是True,并且vmin或vmax为空,则使用稳健分位数而不是极值来计算色彩映射范围。
  • annot:布尔值或者矩形数据,可选参数。如果为True,则在每个热力图单元格中写入数据值。 如果数组的形状与data相同,则使用它来代替原始数据注释热力图。
  • fmt:字符串,可选参数。添加注释时要使用的字符串格式代码。
  • annot_kws:字典或者键值对,可选参数。当annot为True时,ax.text的关键字参数。
  • linewidths:浮点数,可选参数。划分每个单元格的行的宽度。
  • linecolor:颜色,可选参数.划分每个单元的线条的颜色。
  • cbar:布尔值,可选参数。描述是否绘制颜色条。
  • cbar_kws:字典或者键值对,可选参数。
    fig.colorbar的关键字参数。
  • cbar_ax:matplotlib Axes,可选参数。用于绘制颜色条的轴,否则从主轴获取。
  • square:布尔值,可选参数。如果为True,则将坐标轴方向设置为“equal”,以使每个单元格为方形。
  • xticklabels, yticklabels:“auto”,布尔值,类列表值,或者整形数值,可选参数。如果为True,则绘制数据框的列名称。如果为False,则不绘制列名称。如果是列表,则将这些替代标签绘制为xticklabels。如果是整数,则使用列名称,但仅绘制每个n标签。如果是“auto”,将尝试密集绘制不重叠的标签。
  • mask:布尔数组或者DataFrame数据,可选参数。如果为空值,数据将不会显示在mask为True的单元格中。 具有缺失值的单元格将自动被屏蔽。
  • ax:matplotlib Axes,可选参数。绘制图的坐标轴,否则使用当前活动的坐标轴。
  • kwargs:其他关键字参数。所有其他关键字参数都传递给ax.pcolormesh。
  • 返回值:ax:matplotlib Axes 热力图的轴对象。

3.实例展示

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()
uniform_data = np.random.rand(10, 12)
sns.heatmap(uniform_data)
plt.show()

在这里插入图片描述
更改默认的colormap范围:

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()
uniform_data = np.random.rand(10, 12)*5
ax = sns.heatmap(uniform_data, vmin=0, vmax=5)
plt.show()

在这里插入图片描述
使用发散色图绘制以0为中心的数据的热力图:

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()
uniform_data = np.random.randn(10, 12)*5
ax = sns.heatmap(uniform_data, center=0)
plt.show()

在这里插入图片描述
使用特定的行和列标签绘制dataframe:这里加载的seaborn自带的数据flights
在这里插入图片描述

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")#解析为纵坐标,横坐标,值
ax = sns.heatmap(flights)
plt.show()

在这里插入图片描述
使用整数格式的数字值注释每个小单元格:

ax = sns.heatmap(flights, annot=True, fmt="d") 

在这里插入图片描述
在每个单元格之间添加线:

ax = sns.heatmap(flights, linewidths=.5)

在这里插入图片描述
使用不同的colormap:这个就是可以换颜色,具体颜色代码看文档
ax = sns.heatmap(flights, cmap=“YlGnBu”)
绘制每个其他列标签,而不绘制行标签:

data = np.random.randn(50, 20)
ax = sns.heatmap(data, xticklabels=2, yticklabels=False)

在这里插入图片描述
4.总结
这一次仅简单说了seaborn.heatmap函数,后续我们将介绍在机器学习中的显示不同特征之间相关性的热力图Pyheatmap.heatmap用法及场景热力图的使用及用法.
5.参考

https://www.cntofu.com/book/172/docs/30.md
http://seaborn.pydata.org/generated/seaborn.heatmap.html
https://www.cnblogs.com/jiaxinwei/p/12015968.html

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值