2024年3月13日
写在前面:有些讲的不清楚的地方,大家可以在官方网站上查看语法:Seaborn:统计数据可视化 — seaborn 0.13.2 文档 (pydata.org)
一般来说,我们使用python的一些库时,需要了解数据输入的格式,然后将自己的数据整理成我们使用的库需要的格式,这个是学会使用库最重要的!!
第一步:查看seaborn需要的数据格式。
import seaborn as sns
glue = sns.load_dataset("glue").pivot(index="Model", columns="Task", values="Score")
sns.heatmap(glue)
说明列就是热力图的y轴,行为热力图的x轴。这里,我需要以1~12月设置为列,2000~2022年设置为行。因此,我的数据需要调整为如下所示的格式:
第二步:输入自己的数据,并绘图。
# 导入需要的库
import seaborn as sns
import pandas as pd
import os
# 导入数据
data = pd.read_csv('你的文件夹位置')
data = data.set_index('month') # 将index设置为month
ax = sns.heatmap(data) # 绘制热力图
# 这里需要注意:当你的文件输入时,文件的index不是month,这会导致程序报错:ValueError: could not convert string to float: 'Jan'
# 所以需要在这段代码之前将index设置为month
# 如果需要在热力图上标记数字,可以使用以下代码:
ax = sns.heatmap(data, annot=True) # or 设置保留小数点的代码: ax = sns.heatmap(data, annot=True, fmt='.1f')
第三步:设置坐标轴和颜色。大家可以选择自己喜欢的颜色。
c = sns.color_palette("Spectral", as_cmap=True) # seabron本身的颜色
ax = sns.heatmap(data, cmap=c)# 或者自己设置颜色也可以,代码如下:
c=sns.color_palette("ch:s=.25,rot=-.25", as_cmap=True)
ax = sns.heatmap(data, vmin=-0.01, vmax=1.25, cmap=c,
cbar_kws={'label': 'days'}) # 设置图例最大值(vmax)和最小值(vmin)以及图例名称cbar_kws
ax.set(xlabel='Year', ylabel='Month') # 设置坐标轴title上面的图字太小,将字体变大(结果3),代码如下:
with sns.plotting_context("talk"):
c = sns.color_palette("blend:#7AB,#EDA", as_cmap=True)
ax = sns.heatmap(data, vmin=-0.01, vmax=1.25, cmap=c,
cbar_kws={'label': 'days'})
ax.set(xlabel='Year', ylabel='Month')