python怎么画热图_python使用matplotlib绘制热图

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]]

从对应关系我们可以看出,图像的左上角为坐标原点,第一行对应的二维矩阵中的第一行数据,以此类推。

同时我们可以看出数值越大的单元,对应热图中的颜色越深。其实这是一个可选项,只需要改变im = ax.imshow(data, cmap=plt.cm.hot_r)中的参数cmap为hot_r,其中_r的意思是就是按照颜色越深,数值越大,如果想数值越大,颜色越浅,只需要去掉_r,直接为hot就行。同时这个hot是热图配色的其中一个主题,主题色参数可选:

hot 从黑平滑过度到红、橙色和黄色的背景色,然后到白色。

cool 包含青绿色和品红色的阴影色。从青绿色平滑变化到品红色。

gray 返回线性灰度色图。

bone 具有较高的蓝色成分的灰度色图。该色图用于对灰度图添加电子的视图。

white 全白的单色色图。

spring 包含品红和黄的阴影颜色。

summer 包含绿和黄的阴影颜色。

autumn 从红色平滑变化到橙色,然后到黄色。

winter 包含蓝和绿的阴影色。

右侧的颜色刻度条colorbar也是可选的,如果不写就不会显示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: python使用matplotlib绘制热图

本文地址: http://www.cppcns.com/jiaoben/python/243841.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值