Python matplotlib绘制热图实战:参数配置与配色方案详解
本文介绍如何使用Python的matplotlib库绘制二维数据热图。通过随机生成5x5矩阵示例,演示了坐标轴设置、颜色映射参数cmap(如hot_r)对数值与颜色深浅对应关系的影响,以及colorbar颜色刻度条的添加方法,帮助开发者快速掌握热图可视化的核心技巧。
在Python生态中,matplotlib是最为常用的绘图库之一。近期在进行公司内部数据可视化工作时,意外发现利用matplotlib绘制热图不仅效果直观,而且代码实现非常简洁。鉴于涉及商业数据保密,此处将使用随机生成的模拟数据进行演示与分享。
import random
from matplotlib import pyplot as plt
from matplotlib import cm
from matplotlib import axes
from matplotlib.font_manager import FontProperties
font = FontProperties(fname='/Library/Fonts/Songti.ttc')
def draw():
#定义热图的横纵坐标
xLabel = ['A','B','C','D','E']
yLabel = ['1','2','3','4','5']
#准备数据阶段,利用random生成二维数据(5*5)
data = []
for i in range(5):
temp = []
for j in range(5):
k = random.randint(0,100)
temp.append(k)
data.append(temp)
#作图阶段
fig = plt.figure()
#定义画布为1*1个划分,并在第1个位置上进行作图
ax = fig.add_subplot(111)
#定义横纵坐标的刻度
ax.set_yticks(range(len(yLabel)))
ax.set_yticklabels(yLabel, fontproperties=font)
ax.set_xticks(range(len(xLabel)))
ax.set_xticklabels(xLabel)
#作图并选择热图的颜色填充风格,这里选择hot
im = ax.imshow(data, cmap=plt.cm.hot_r)
#增加右侧的颜色刻度条
plt.colorbar(im)
#增加标题
plt.title("This is a title", fontproperties=font)
#show
plt.show()
d = draw()
最终生成的热图效果如下图所示:

为了更直观地展示二维数值矩阵与生成的热图之间的映射关系,我们将对应的二维矩阵数据打印输出如下:
[[17, 96, 11, 99, 83], [18, 17, 58, 18, 80], [87, 79, 15, 53, 4], [86, 53, 48, 36, 23], [25, 4, 94, 100, 71]]
通过对比上述矩阵与图像,可以观察到图像的左上角对应坐标原点,且矩阵的第一行数据对应热图的第一行,后续行以此类推。同时可见,矩阵中数值越大的单元格,在热图中显示的颜色越深。这一行为可通过修改代码中的cmap参数来调整,例如将im = ax.imshow(data, cmap=plt.cm.hot_r)中的cmap设为hot_r,其中后缀_r表示颜色随数值增大而变深;若希望数值越大颜色越浅,则直接使用hot即可。hot是热图配色主题之一,其他可选的主题色参数包括:
- hot:颜色从黑色平滑过渡到红色、橙色和黄色背景,最后渐变为白色。
- cool:包含青绿色和品红色的阴影色调,从青绿色平滑变化至品红色。
- gray:返回线性的灰度色图。
- bone:一种带有较高蓝色成分的灰度色图,常用于给灰度图添加电子视图效果。
- white:全白色的单色色图。
- spring:包含品红和黄色的阴影颜色。
- summer:包含绿色和黄色的阴影颜色。
- autumn:颜色从红色平滑变化到橙色,再过渡到黄色。
- winter:包含蓝色和绿色的阴影色调。
此外,右侧的颜色刻度条(colorbar)也是可选配置,若代码中未添加相关语句,则不会显示该刻度条。
以上内容即为本次关于Python matplotlib绘制热图的完整分享,希望能对读者的学习有所帮助,也欢迎大家继续支持本站获取更多技术内容。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













