(二十一)Seaborn知识学习8-python数据分析与机器学习实战(学习笔记)

文章原创,最近更新:2018-05-17
课程来源: python数据分析与机器学习实战-唐宇迪

引言:介绍seaborn热度图绘制
学习参考链接:
1、Seaborn官方0.8.1版本

首先介绍以下热度图的作用,拿出离散群数据,离散群数据可能会发生波动变化.看一下哪个点的值比较高,看一下哪个点的值比较低?通过值的变化,用颜色表现出来,这个是我们要做的一件事.

热度图是由不同的颜色构成的,这个颜色由可能是由浅入深,有可能是有深入浅.这里颜色是0.5-0.9之间,好比今天的股票涨幅的情况,涨幅比较低的情况下用0.5来表示,涨幅比较高,可以用0.8表示.

用热度图颜色的差异很方便的看出,那个点的值是偏高还是偏低?我们通过一个小例子来了解一下热度图:

案例代码如下:

import seaborn as sns
import numpy as np

np.random.seed(0)
sns.set()

uniform_data=np.random.rand(3,3)
print(uniform_data)
heatmap=sns.heatmap(uniform_data)

输出结果如下:

[[ 0.5488135   0.71518937  0.60276338]
 [ 0.54488318  0.4236548   0.64589411]
 [ 0.43758721  0.891773    0.96366276]]

《(二十一)Seaborn知识学习8-python数据分析与机器学习实战(学习笔记)》

从输出的结果可以看出,右边有个类似与调色板的东西,取值范围是0.5-0.8.比如0.5488135这个值,就会在调色板里面的颜色范围取值,这个取值偏紫色,就会画出紫色的颜色.

可以通过颜色的差异,知道什么样的值偏高,什么样的值偏低?比如这里,颜色偏黑的,值比较小,颜色偏白的,值比较大.

那么想设置调色板取值区间的设置,又应该怎么样设置呢?

在heatmap函数()增加vmin最小的取值以及vmax最大的取值属性的设置.

案例代码如下:

import seaborn as sns
import numpy as np

np.random.seed(0)
sns.set()
uniform_data=np.random.rand(3,3)
print(uniform_data)
heatmap=sns.heatmap(uniform_data,vmin=0.2,vmax=0.8)

输出结果如下:

[[ 0.5488135   0.71518937  0.60276338]
 [ 0.54488318  0.4236548   0.64589411]
 [ 0.43758721  0.891773    0.96366276]]

《(二十一)Seaborn知识学习8-python数据分析与机器学习实战(学习笔记)》

从输出的结果可以看出,数据没变,但是数据相对应的颜色变了,没改变颜色数值之前0.891773对应的颜色是橙色,改变颜色数值之后0.891773对应的颜色是偏奶白色,因为只要是数字大于0.75都是奶白色的区间.

比如拿到一组数据是权重参数,这个参数可能有正值,也有负值,比如一个股票,正值代表升了,负值代表跌了.,怎么设置调色板的中间值为0?

在heatmap函数()增加center=0属性的设置.

案例代码如下:

import seaborn as sns
import numpy as np

np.random.seed(3)
sns.set()
uniform_data=np.random.randn(3,3)
print(uniform_data)
heatmap=sns.heatmap(uniform_data,center=0)

输出结果如下:

[[ 1.78862847  0.43650985  0.09649747]
 [-1.8634927  -0.2773882  -0.35475898]
 [-0.08274148 -0.62700068 -0.04381817]]

《(二十一)Seaborn知识学习8-python数据分析与机器学习实战(学习笔记)》

从输出的结果可以看出,中心值0以上的颜色与中心值以下的颜色都是不一样的,而且差异非常大.

在seanborn库有自带的一个数据集叫”flights”,我们先看看这个数据集前5行是什么样的?

案例代码如下:

import seaborn as sns
flights=sns.load_dataset("flights")
print(flights.head())

输出结果如下:

   year     month  passengers
0  1949   January         112
1  1949  February         118
2  1949     March         132
3  1949     April         129
4  1949       May         121

从输出结果可以看出,(“flights”数据集记录的是航班每一年每个月份的乘客数量.比如1949年1月份,乘客有112名.

如何从”flights”数据集中表达横轴年份与纵轴月份之间的乘客关系?并由不同的颜色表示?

首先我们先查看用pivot()函数画出的以x轴以”month”, y轴以”year”,坐标上的点 “passengers”.

案例代码如下:

import seaborn as sns
flights=sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax=sns.heatmap(flights)

输出结果如下:

《(二十一)Seaborn知识学习8-python数据分析与机器学习实战(学习笔记)》

颜色的调色板的取值范围,在未设定的情况下是根据数据的最大值以及最小值进行自动调整的.从1949年到1960年乘客的数量由偏黑色转向到偏淡橘色.也由此说明了人数由少慢慢开始偏多.

能否将每年每月份相对应的乘客画到对应的图中呢?

需要在headmap()函数增加annot=True的属性就可以将对应的人数显示出来,增加fmt=”d”,就是将字体的颜色设置为d.

具体案例代码如下:

import seaborn as sns
flights=sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax=sns.heatmap(flights,annot=True,fmt="d")

输出结果如下:

《(二十一)Seaborn知识学习8-python数据分析与机器学习实战(学习笔记)》

怎么设置每个数据绘制的对应颜色有间距呢?

headmap()函数增加linewidths=.5,即可设置间距的大小

案例代码如下:

import seaborn as sns
flights=sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax=sns.heatmap(flights,linewidths=.5)

输出结果如下:

《(二十一)Seaborn知识学习8-python数据分析与机器学习实战(学习笔记)》

有间距可以看差距可以更加明显一点.推荐增加.

怎么指定调色板?

headmap()函数增加cmap=”YlGnBu”,即可设置调色板的颜色.

案例代码如下:

import seaborn as sns
flights=sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax=sns.heatmap(flights,cmap="YlGnBu")

输出结果如下:

《(二十一)Seaborn知识学习8-python数据分析与机器学习实战(学习笔记)》

怎么隐藏绘图右边的调色板

headmap()函数增加cbar=False,即可以隐藏.

案例代码如下:

import seaborn as sns
flights=sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax=sns.heatmap(flights,cbar=False)

输出结果如下:

《(二十一)Seaborn知识学习8-python数据分析与机器学习实战(学习笔记)》

最好还是把调色板显示出来哦.

    原文作者:durian221783310
    原文地址: https://www.jianshu.com/p/49b61de5d358
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞