5分钟入门 Seaborn 热力图可视化

火山方舟向量数据库大模型

picture.image

Seaborn是基于matplotlib的Python可视化库。 它提供了一个高级界面来绘制有吸引力的统计图形。 Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,不需要经过大量的调整就能使你的图变得精致。

picture.image

注:所有代码均在IPython notebook中实现

heatmap 热力图

热力图在实际中常用于展示一组变量的相关系数矩阵,在展示列联表的数据分布上也有较大的用途,通过热力图我们可以非常直观地感受到数值大小的差异状况。heatmap的API如下所示:

picture.image

下面将演示 这些主要参数的用法, 第一件事还是先导入相关的packages。


            
1import seaborn as sns  
2%matplotlib inline  
3sns.set(font_scale=1.5)  

        

本次演示采用的数据集是Seaborn中内置的 flights航班数据集


            
1#导入数据集后按年月两个维度进行数据透视  
2data=sns.load_dataset("flights")\  
3        .pivot("month","year","passengers")   
4data.head()   

        

picture.image

如上图所示,dataframe中的数据代表了1949年-1960年每个月的航班乘客数量,接下来热力图就隆重登场啦!


            
1sns.set_context({"figure.figsize":(8,8)})  
2sns.heatmap(data=data,square=True)   
3#可以看到热力图主要展示的是二维数据的数据关系  
4#不同大小的值对应不同的颜色深浅  

        

picture.image

热力图的右侧是颜色带,上面代表了数值到颜色的映射,数值由小到大对应色彩由暗到亮。从上面的heatmap中我们可以得到两层信息,一是随着时间的推移,飞机的乘客数量是在逐步增多的,二是航班的乘坐旺季在七月和八月份。下面就具体的参数进行演示。

vmax:设置颜色带的最大值
vmin:设置颜色带的最小值


              
1sns.heatmap(data=data,vmin=200,  
2            vmax=500)  

          

picture.image

可以看到右侧的颜色带最大最小值变了,而heatmap中颜色映射关系也会随之调整,将本图和上面的图进行对比便一目了然。

cmap:设置颜色带的色系


              
1sns.heatmap(data=data,cmap="RdBu\_r")  

          

picture.image

好像变好看了?

center:设置颜色带的分界线


                
1sns.heatmap(data=data,cmap="RdBu\_r",  
2            center=300)
            
![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/afd64675d3f64499a6052ca3d062d9e8~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1752820572&x-signature=%2FCI5rai6ietTZUmDCl%2BczTNu2zs%3D)

细心的朋友可以察觉到颜色带上色彩两级的分界线变成了300

annot:是否显示数值注释


                
1sns.heatmap(data=data,annot=True,  
2            cmap="RdBu\_r")  

            

picture.image

怎么回事?乱码了吗?其实数值注释默认显示的是 科学记数法 的数值,我们得把数值进行格式化,这就用到了下面的参数。

fmt:format的缩写,设置数值的格式化形式


                  
1sns.heatmap(data=data,annot=True,  
2            fmt="d",cmap="RdBu\_r")  
3#foramt为int类型
              

picture.image

linewidths:控制每个小方格之间的间距


                  
1sns.heatmap(data=data,annot=True,  
2            fmt="d",linewidths=0.3,  
3            cmap="RdBu\_r")   
4#可以看到每个小方格之产生了间隙  

              

picture.image

linecolor:控制分割线的颜色


                    
1sns.heatmap(data=data,annot=True,  
2            fmt="d",linewidths=0.3,  
3            linecolor="grey",cmap="RdBu\_r")  
4#原来的白色间隙变成了灰色间隙
                

picture.image

cbar_kws:关于颜色带的设置


                  
1sns.heatmap(data=data,annot=True,  
2            fmt="d",cmap="RdBu\_r",  
3            cbar_kws={"orientation":"horizontal"})    
4#横向显示颜色帮
              

picture.image

mask:传入布尔型矩阵,若为矩阵内为True,则热力图相应的位置的数据将会被屏蔽掉(常用在绘制相关系数矩阵图)


                    
 1import numpy as np  
 2#随机生成一个200行10列的数据集  
 3data_new = np.random.randn(200,10)  
 4  
 5#求出这个数据集的相关系数矩阵  
 6corr = np.corrcoef(data_new,rowvar=False)  
 7  
 8#以corr的形状生成一个全为0的矩阵  
 9mask = np.zeros_like(corr)  
10  
11#将mask的对角线及以上设置为True  
12#这部分就是对应要被遮掉的部分  
13mask[np.triu_indices_from(mask)] = True  
14  
15with sns.axes_style("white"):  
16    sns.heatmap(corr, mask=mask, vmax=0.3,   
17                annot=True,cmap="RdBu\_r")  

                

picture.image

如果大家对上面的代码流程不大了解,可以把mask打印出来看看

picture.image

参照mask和上面绘制的图,应该就很容易理解了,mask中为1的部分,就是要被盖掉的部分。演示到此为止,想更深入的学习可以自行查阅官方文档!

picture.image

▼ 点击成为社区注册会员** 喜欢文章,点个** 在看 picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
高性能存储虚拟化方案 NVMe over Fabric 在火山引擎的演进
在云计算中,虚拟化存储扮演着重要角色,其中 iSCSI 协议在业界开放、流行多年。近年来,拥有更优性能的 NVMe over Fabrics 协议也得到了发展。本次分享介绍了 NVMe over Fabrics 在云原生和虚拟化方向的演进工作和成果。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论