当前位置: 首页 > 后端技术 > Python

Python可视化-Seaborn5分钟介绍(六)——heatmap热力图

时间:2023-03-26 19:10:15 Python

微信公众号:《Python读钱》有任何问题或建议欢迎留言公众号Seaborn是一个基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,无需大量调整,让绘图更简单,让你的图更精致。注意:所有代码均在IPythonnotebook中实现。热图heatmap在实践中常用于显示一组变量的相关系数矩阵。它还可用于显示列联表的数据分布。通过热图,我们可以很直观的感受到数值上的差异。heatmap的API如下:下面将演示这几个主要参数的用法。首先是先导入相关包。importseabornassns%matplotlibinlinesns.set(font_scale=1.5)本次演示使用的数据集是Seaborn中内置的flights飞行数据集:#导入数据集后,根据year的两个维度对数据进行pivotandmonthdata=sns.load_dataset("flights")\.pivot("month","year","passengers")data.head()如上图所示,dataframe中的数据代表航班号1949年到1960年每月客运量,接下来热力图将隆重登场!sns.set_context({"figure.figsize":(8,8)})sns.heatmap(data=data,square=True)#可以看到热图主要展示二维数据的数据关系#不同sizes值对应不同的颜色深浅。热图的右侧是色带,表示从值到颜色的映射。值由小到大对应颜色由暗到亮。从上面的热图中,我们可以得到两层信息。一是随着时间的推移,飞机上的乘客人数在逐渐增加,二是7、8月份是飞行的旺季。具体参数说明如下。vmax:设置色带的最大值vmin:设置色带的最小值sns.heatmap(data=data,vmin=200,vmax=500)可以看到颜色的最大值和最小值右边的band发生了变化,同时heatmap中的颜色映射关系也会相应调整,这张图和上图对比一下就一目了然了。cmap:设置色带的颜色系统sns.heatmap(data=data,cmap="RdBu_r")好像更好看?center:设置色带的分界线sns.heatmap(data=data,cmap="RdBu_r",center=300)细心的朋友可以注意到,色带上两级颜色的分界线变成了300annot:是否显示数值标注sns.heatmap(data=data,annot=True,cmap="RdBu_r")怎么回事?乱码?事实上,数值注释默认以科学计数法显示数值。我们必须格式化数值,它使用以下参数。fmt:format的缩写,设置值的格式化形式sns.heatmap(data=data,annot=True,fmt="d",cmap="RdBu_r")#foramt是int类型小方块之间的间距sns.heatmap(data=data,annot=True,fmt="d",linewidths=0.3,cmap="RdBu_r")#可以看到每个小方块之间有空隙分割线Colorsns.heatmap(data=data,annot=True,fmt="d",linewidths=0.3,linecolor="grey",cmap="RdBu_r")#原来的白色间隙变成了灰色间隙cbar_kws:about色带设置sns.heatmap(data=data,annot=True,fmt="d",cmap="RdBu_r",cbar_kws={"orientation":"horizo??ntal"})#Horizo??ntaldisplaycolorhelpmask:传入布尔值matrix,如果矩阵中为True,则将热图对应位置的数据mask掉(常用于绘制相关系数矩阵图)importnumpyasnp#随机生成200行10列的数据集data_new=np.random.randn(200,10)#求这个数据集的相关系数矩阵corr=np.corrcoef(data_new,rowvar=False)#生成corr形状的全0矩阵mask=np.zeros_like(corr)#设置mask的对角线及以上为True#这部分对应要覆盖的部分,vmax=0.3,annot=True,cmap="RdBu_r")如果对上面的代码流程不太了解,可以把mask打印出来,参考mask和上面画的图,应该很容易理解,mask中为1的部分就是要覆盖的部分。演示到此结束,想了解更多的可以自行查看官方文档!扫描二维码关注公众号《Python读钱》,干货第一时间获取!