# 随机热力图:imshow和seaborn
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
def heatmap(data, xlabel, ylabel): # imshow绘制矩阵随机热力图
# plt.figure(facecolor='w')
plt.subplot(121) # imshow绘制热力图
#plt.figure(figsize=(6, 6))
plt.yticks(range(len(ylabel)), ylabel)
plt.xticks(range(len(xlabel)), xlabel)
# 求data数组的最小值和最大值
vmax, vmin = data[0][0], data[0][0]
for i in data:
if min(i) < vmin:
vmin = min(i)
if max(i) > vmax:
vmax = max(i)
map = plt.imshow(data,
interpolation='nearest',
cmap='summer',
vmin=vmin,
vmax=vmax)
plt.colorbar(map, shrink=0.5)
plt.title('imshow绘制')
plt.subplot(122) # seaborn绘制热力图
#plt.figure(figsize=(6, 6))
ax = sns.heatmap(data,
cmap='summer',
center=None, # 设置图例的均值数据,即发散色图以center值为中心
# annot=True, # 显示数据
vmin=0, vmax=1, # 更改默认colormap的范围
# cbar=False #取消颜色条的显示,默认True
)
plt.yticks(range(len(ylabel)), ylabel)
plt.xticks(range(len(xlabel)), xlabel)
plt.title('seaborn绘制')
plt.show()
if __name__ == "__main__":
data = np.random.rand(10, 10)
xlabel = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
ylabel = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
heatmap(data, xlabel, ylabel)