matplotlib绘制热力图,并显示数值
代码如下:
from matplotlib import pyplot as plt
import numpy as np
def draw():
# 定义热图的横纵坐标
xLabel = ['0.1', '0.3', '0.5', '0.7', '0.9', '1']
yLabel = ['0.001', '0.01', '0.1', '1']
# 准备数据阶段
data = np.array([[0.9095, 0.9187, 0.9205, 0.9264, 0.9261, 0.9127], [0.9130, 0.9106, 0.9240, 0.9322, 0.9285, 0.9138],
[0.8857, 0.8851, 0.8880, 0.8936, 0.8867, 0.9147],
[0.9181, 0.9217, 0.9308, 0.9355, 0.9377, 0.9104]])
# 作图阶段
fig, ax = plt.subplots()
# 定义横纵坐标的刻度
ax.set_yticks(range(len(yLabel)))
ax.set_yticklabels(yLabel)
ax.set_xticks(range(len(xLabel)))
ax.set_xticklabels(xLabel)
# 作图并选择热图的颜色填充风格,这里选择yLGn
im = ax.imshow(data, cmap="YlGn")
# 增加右侧的颜色刻度条
plt.colorbar(im)
# 填充数字
for i in range(len(yLabel)):
for j in range(len(xLabel)):
print('data[{},{}]:{}'.format(i, j, data[i, j]))
ax.text(j, i, data[i, j],
ha="center", va="center", color="black")
# 增加标题
plt.title("AUC values", fontdict={'size': 16})
plt.xlabel(r'$\beta$', fontdict={'size': 16})
plt.ylabel(r'$\gamma$', rotation=0, fontdict={'size': 16})
# show
fig.tight_layout()
plt.show()
d = draw()
效果图如下:
完结撒花!