微信公众号:「Python读财」
若有问题或建议,请公众号留言
Seaborn是基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn实际上是在matplotlib的基础上进行了更高级的API封装,从而使得做图更加容易,不须要通过大量的调整就能使你的图变得精致。微信
注:全部代码均在IPython notebook中实现dom
热力图在实际中经常使用于展现一组变量的相关系数矩阵,在展现列联表的数据分布上也有较大的用途,经过热力图咱们能够很是直观地感觉到数值大小的差别情况。heatmap的API以下所示:学习
下面将演示这些主要参数的用法,第一件事仍是先导入相关的packages。spa
import seaborn as sns %matplotlib inline sns.set(font_scale=1.5)
本次演示采用的数据集是Seaborn中内置的flights航班数据集:3d
#导入数据集后按年月两个维度进行数据透视 data=sns.load_dataset("flights")\ .pivot("month","year","passengers") data.head()
如上图所示,dataframe中的数据表明了1949年-1960年每月的航班乘客数量,接下来热力图就隆重登场啦!code
sns.set_context({"figure.figsize":(8,8)}) sns.heatmap(data=data,square=True) #能够看到热力图主要展现的是二维数据的数据关系 #不一样大小的值对应不一样的颜色深浅
热力图的右侧是颜色带,上面表明了数值到颜色的映射,数值由小到大对应色彩由暗到亮。从上面的heatmap中咱们能够获得两层信息,一是随着时间的推移,飞机的乘客数量是在逐步增多的,二是航班的乘坐旺季在七月和八月份。下面就具体的参数进行演示。orm
vmax
:设置颜色带的最大值vmin
:设置颜色带的最小值blog
sns.heatmap(data=data,vmin=200,vmax=500)
能够看到右侧的颜色带最大最小值变了,而heatmap中颜色映射关系也会随之调整,将本图和上面的图进行对比便一目了然。rem
cmap
:设置颜色带的色系文档
sns.heatmap(data=data,cmap="RdBu_r")
好像变好看了?
center
:设置颜色带的分界线
sns.heatmap(data=data,cmap="RdBu_r",center=300)
细心的朋友能够察觉到颜色带上色彩两级的分界线变成了300
annot
:是否显示数值注释
sns.heatmap(data=data,annot=True,cmap="RdBu_r")
怎么回事?乱码了吗?其实数值注释默认显示的是科学记数法的数值,咱们得把数值进行格式化,这就用到了下面的参数。
fmt
:format的缩写,设置数值的格式化形式
sns.heatmap(data=data,annot=True,fmt="d",cmap="RdBu_r") #foramt为int类型
linewidths
:控制每一个小方格之间的间距
sns.heatmap(data=data,annot=True,fmt="d",linewidths=0.3,cmap="RdBu_r") #能够看到每一个小方格之产生了间隙
linecolor
:控制分割线的颜色
sns.heatmap(data=data,annot=True,fmt="d",linewidths=0.3,linecolor="grey",cmap="RdBu_r") #原来的白色间隙变成了灰色间隙
cbar_kws
:关于颜色带的设置
sns.heatmap(data=data,annot=True,fmt="d",cmap="RdBu_r", cbar_kws={"orientation":"horizontal"}) #横向显示颜色帮
mask
:传入布尔型矩阵,若为矩阵内为True,则热力图相应的位置的数据将会被屏蔽掉(经常使用在绘制相关系数矩阵图)
import numpy as np #随机生成一个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 #这部分就是对应要被遮掉的部分mask[np.triu_indices_from(mask)] = True with sns.axes_style("white"): sns.heatmap(corr, mask=mask, vmax=0.3, annot=True,cmap="RdBu_r")
若是你们对上面的代码流程不大了解,能够把mask打印出来看看
参照mask和上面绘制的图,应该就很容易理解了,mask中为1的部分,就是要被盖掉的部分。演示到此为止,想更深刻的学习能够自行查阅官方文档!
扫码关注公众号「Python读财」,第一时间获取干货!!