python的开发者为处理表格和画图提供了库的支持,使用pandas库可以轻松完成对csv文件的读写操作,使用matplotlib库提供了画热力图的各种方法。实现这个功能首先需要读出csv数,然后设置自定义色条的各种属性如颜色,位置,名称等,然后设置热力图的各种属性,如文字格式,单元格大小等。需要说明的是,创建色条用到的colors和positions,可以自定义,可以设置多个色阶。其代码如下:
from matplotlib.colors import LinearSegmentedColormap
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df1 = pd.read_csv('D:\Library\Desktop\data.csv',index_col=0)
#设置色条 colors是从下到上渐变色的RGB值
colors = [(0,0,224/255), (255/255,246/255,6/255), (251/255,199/255,2/255), (254/255,136/255,2/255), (251/255,100/255,0/255)]
positions = [0, 0.3, 0.5, 0.75,1]
# 创建渐变色条
cmap = LinearSegmentedColormap.from_list("my_colormap", list(zip(positions, colors)))
# 画热力图
plt.figure(figsize=(20, 10),dpi=100)#设置单元格大小、像素
plt.title("Xixi",size=20)#设置标题、字体大小
ax = sns.heatmap(df1,cmap=cmap,annot=True,linewidths=0.5)#cmap=载入色条 annot=true代表单元格显示数据 line设置分割线
ax.set_xticklabels(ax.get_xticklabels(), rotation=0)#把横坐标文字从竖排改成横着写
plt.show()
其效果如下: