reference:https://blog.csdn.net/a19990412/article/details/79304944
用seaborn包画
plt.subplots(figsize=(9, 9))设置画面大小,会使得整个画面等比例放大的
sns.heapmap()这个当然是用来生成热力图的啦
df是DataFrame, pandas的这个类还是很常用的啦~
df.corr()就是得到这个dataframe的相关系数矩阵
把这个矩阵直接丢给sns.heapmap中做参数就好啦
sns.heapmap中annot=True,意思是显式热力图上的数值大小。
sns.heapmap中square=True,意思是将图变成一个正方形,默认是一个矩形
sns.heapmap中cmap="Blues"是一种模式,就是图颜色配置方案啦,我很喜欢这一款的。
sns.heapmap中vmax是显示最大值
# -*- coding: UTF-8 -*-
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# a = np.random.rand(4,3)
a = np.array([[1,0.107562,0.270034,0.266753],
[0.107562,1,0.543716,0.540923],
[0.270034,0.543716,1,0.950266],
[0.266753,0.540923,0.950266,1]])
fig, ax = plt.subplots(figsize = (9,9))
#二维的数组的热力图,横轴和数轴的ticklabels要加上去的话,既可以通过将array转换成有column
#和index的DataFrame直接绘图生成,也可以后续再加上去。后面加上去的话,更灵活,包括可设置labels大小方向等。
sns.heatmap(pd.DataFrame(np.round(a,2), columns = ['img0', 'img1', 'img2','img3'], index = ['img0', 'img1', 'img2','img3']),
annot=True, vmax=1,vmin = 0, xticklabels= True, yticklabels= True, square=True, cmap="Blues")
#sns.heatmap(np.round(a,2), annot=True, vmax=1,vmin = 0, xticklabels= True, yticklabels= True,
# square=True, cmap="YlGnBu")
# ax.set_title('二维数组热力图', fontsize = 18)
ax.set_ylabel('image', fontsize = 18)
ax.set_xlabel('iamge', fontsize = 18) #横变成y轴,跟矩阵原始的布局情况是一样的
plt.savefig('./out.png')
plt.show()
