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/')
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)
matplotlib中subplot
ax.set_xticks(range(len(xLabel)))
ax.set_xticklabels(xLabel)
#作图并选择热图的颜⾊填充风格,这⾥选择hot
im = ax.imshow(data, hot_r)
#增加右侧的颜⾊刻度条
#增加标题
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,
hot_r)中的参数cmap为hot_r,其中_r的意思是就是按照颜⾊越深,数值越⼤,如果想数值越⼤,颜⾊越浅,只需要去掉_r,直接为hot就⾏。同时这个hot是热图配⾊的其中⼀个主题,主题⾊参数可选:
hot 从⿊平滑过度到红、橙⾊和黄⾊的背景⾊,然后到⽩⾊。
cool 包含青绿⾊和品红⾊的阴影⾊。从青绿⾊平滑变化到品红⾊。
gray 返回线性灰度⾊图。
bone 具有较⾼的蓝⾊成分的灰度⾊图。该⾊图⽤于对灰度图添加电⼦的视图。
white 全⽩的单⾊⾊图。
spring 包含品红和黄的阴影颜⾊。
summer 包含绿和黄的阴影颜⾊。
autumn 从红⾊平滑变化到橙⾊,然后到黄⾊。
winter 包含蓝和绿的阴影⾊。
右侧的颜⾊刻度条colorbar也是可选的,如果不写就不会显⽰
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。