【Python】:数据可视化之相关系数热力图绘制(一)(matplotlib版本)

一、什么是热力图?

热力图是一种通过对色块着色来显示数据的统计图表。绘图时,需指定颜色映射的规则。例如,较大的值由较深的颜色表示,较小的值由较浅的颜色表示;较大的值由偏暖的颜色表示,较小的值由较冷的颜色表示,等等。

从数据结构来划分,热力图一般分为两种。第一,表格型热力图,也称色块图。它需要 2 个分类字段和 1 个数值字段,分类字段确定 x、y 轴,将图表划分为规整的矩形块。数值字段决定了矩形块的颜色。第二,非表格型热力图,或者叫做平滑的热力图,它需要 3 个数值字段,可绘制在平行坐标系中(2个数值字段分别确定x、y轴,1个数值字段确定着色)。

热力图适合用于查看总体的情况、发现异常值、显示多个变量之间的差异,以及检测它们之间是否存在任何相关性。

二、热力图的绘制

下面我们就通过例子来讲述热力图的绘制,示例代码如下:

import matplotlib.pyplot as plt
import numpy as np

harvest = np.array([[0.56, 0.23, 6.9, 3.9, 0.0, 4.0, 0.0],
                    [2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0],
                    [1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0],
                    [0.6, 0.0, 0.3, 10, 3.1, 0.0, 0.0],
                    [0.7, 1.7, 0.6, 2.6, 2.2, 6.2, 0.0],
                    [1.3, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1],
                    [0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]])

plt.imshow(harvest)
plt.tight_layout()
plt.show()

将一个二维数组传入到 imshow 方法中便可以绘制一个热力图,每个色块的颜色代表数据的大小。

结果展示如下:
【Python】:数据可视化之相关系数热力图绘制(一)(matplotlib版本)_第1张图片
上面只是绘制了色块,并没有指明 x 轴 和 y 轴代表的含义,下面我们加上 x 轴和 y 轴的标签,并加上标题。示例代码如下:

import matplotlib.pyplot as plt
import numpy as np
X=['x1','x2','x3','x4','x5','x6','x7']
Y=['y1','y2','y3','y4','y5','y6','y7']

harvest = np.array([[0.56, 0.23, 6.9, 3.9, 0.0, 4.0, 0.0],
                    [2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0],
                    [1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0],
                    [0.6, 0.0, 0.3, 10, 3.1, 0.0, 0.0],
                    [0.7, 1.7, 0.6, 2.6, 2.2, 6.2, 0.0],
                    [1.3, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1],
                    [0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]])
plt.xticks(np.arange(len(X)),labels=X,rotation=45, rotation_mode="anchor", ha="right")
plt.yticks(np.arange(len(Y)),labels=Y,rotation=45, rotation_mode="anchor", ha="right")
plt.imshow(harvest)
plt.tight_layout()
plt.show()

结果展示为:
【Python】:数据可视化之相关系数热力图绘制(一)(matplotlib版本)_第2张图片
上图中,我们加上了 x 轴和 y 轴代表的含义以及整个图的标题,但是现在我们还不知道不同色块所对应的数值的大小,下面我们就来加上。示例代码如下:

只需要加上一句plt.colorbar()

import matplotlib.pyplot as plt
import numpy as np
X=['x1','x2','x3','x4','x5','x6','x7']
Y=['y1','y2','y3','y4','y5','y6','y7']

harvest = np.array([[0.56, 0.23, 6.9, 3.9, 0.0, 4.0, 0.0],
                    [2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0],
                    [1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0],
                    [0.6, 0.0, 0.3, 10, 3.1, 0.0, 0.0],
                    [0.7, 1.7, 0.6, 2.6, 2.2, 6.2, 0.0],
                    [1.3, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1],
                    [0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]])
plt.xticks(np.arange(len(X)),labels=X,rotation=45, rotation_mode="anchor", ha="right")
plt.yticks(np.arange(len(Y)),labels=Y,rotation=45, rotation_mode="anchor", ha="right")
plt.imshow(harvest)
plt.tight_layout()
plt.colorbar()
plt.show()

展示如下:
【Python】:数据可视化之相关系数热力图绘制(一)(matplotlib版本)_第3张图片
上图我们便加上了颜色和数值的对应规则。接下来我们再为每个色块加上所代表的数值。例如:

(只需要加入一个循环)

import matplotlib.pyplot as plt
import numpy as np
X=['x1','x2','x3','x4','x5','x6','x7']
Y=['y1','y2','y3','y4','y5','y6','y7']

harvest = np.array([[0.56, 0.23, 6.9, 3.9, 0.0, 4.0, 0.0],
                    [2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0],
                    [1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0],
                    [0.6, 0.0, 0.3, 10, 3.1, 0.0, 0.0],
                    [0.7, 1.7, 0.6, 2.6, 2.2, 6.2, 0.0],
                    [1.3, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1],
                    [0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]])
plt.xticks(np.arange(len(X)),labels=X,rotation=45, rotation_mode="anchor", ha="right")
plt.yticks(np.arange(len(Y)),labels=Y,rotation=45, rotation_mode="anchor", ha="right")

for i in range(len(X)):
    for j in range(len(Y)):
        text = plt.text(j, i, harvest[i, j], ha="center", va="center", color="w")

plt.imshow(harvest)
plt.tight_layout()
plt.colorbar()
plt.show()

展示为:
【Python】:数据可视化之相关系数热力图绘制(一)(matplotlib版本)_第4张图片

你可能感兴趣的:(Python3常用到的函数总结,python,matplotlib,numpy,热力图)