天天看点

科研作图-heatmap(一)

1.简介

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

2.seaborn.heatmap使用方法

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

  • 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()
           
科研作图-heatmap(一)

更改默认的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()
           
科研作图-heatmap(一)

使用发散色图绘制以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()
           
科研作图-heatmap(一)

使用特定的行和列标签绘制dataframe:这里加载的seaborn自带的数据flights

科研作图-heatmap(一)
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()
           
科研作图-heatmap(一)

使用整数格式的数字值注释每个小单元格:

科研作图-heatmap(一)

在每个单元格之间添加线:

科研作图-heatmap(一)

使用不同的colormap:这个就是可以换颜色,具体颜色代码看文档

ax = sns.heatmap(flights, cmap=“YlGnBu”)

绘制每个其他列标签,而不绘制行标签:

data = np.random.randn(50, 20)
ax = sns.heatmap(data, xticklabels=2, yticklabels=False)
           
科研作图-heatmap(一)

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