一、seaborn介绍
seaborn是python中基于Matplotlib包具有更多可视化效果和更多风格的可视化模块,可以说是Matplotlib的封装。当我们想要
探索单个或者一对数据分布上的特征
时,可以使用seaborn中内置的若干函数对数据的分布进行多种多样的可视化。
对于
单变量和双变量进行核密度估计
,并可视化,参数表如下:
bool型,是否为核密度估计中最低的范围着色,
主要用于在同一个坐标轴中比较多个不同分布总体
,默认为True
# ax = sns.kdeplot(x,shade = True,color='r',legend=True)
ax = sns.kdeplot(x,shade=True,label='x')
3、修改为核密度估计的累计分布
ax = sns.kdeplot(x,shade=True,color='r',cumulative=True)
4、交换x-y轴位置
ax = sns.kdeplot(x,shade = True,color='r',vertical = True)
5、绘制双变量联合密度估计图
ax = sns.kdeplot(x,y)
6、修改调色方案,并设置shade_lowest = True、阴影填充及核密度区间个数
ax = sns.kdeplot(x,y,cmap='Blues',shade = True,shade_lowest=True)
ax = sns.kdeplot(x,y,cmap='Blues',shade = True,shade_lowest=True,n_levels=5)
7、在同一个子图中绘制两个不同一维总体的核密度估计图
ax1 = sns.kdeplot(x,label='x',shade = True,color='r')
ax2 = sns.kdeplot(y,label='y',shade = True,color='y')
8、在同一个子图中绘制两个不同二维总体的核密度估计图
mean1 = [-1,1]
cov1 = [(0,0.3),(0.3,0.1)]
x1,y1 = np.random.multivariate_normal(mean1,cov1,30).T
ax1 = sns.kdeplot(x,y,cmap='Reds',shade=True,shade_lowest=False)
ax2 = sns.kdeplot(x1,y1,cmap='Greens',shade=True,shade_lowest=False)
用于绘制出一维数组中数据点实际的分布位置情况,即不添加任何数学意义上的拟合,只是单纯的记录值在坐标轴上进行展示,相当于kdeplot,可以展示出数据的离散分布情况。参数表如下:
kdeplot参数表
一维数组,单变量时作为唯一的量
|
data2
|
格式同data,单变量时不输入,双变量是作为第2个输入变量
|
shade
|
bool型,是否对核密度估计曲线下的面积进行色彩填充,默认为False
|
vertical
|
bool型,是否颠倒x-y轴位置(单变量输入时有效)
|
kernel
|
字符型,核密度估计的方法,默认为‘gau’,即高斯核,且在2维变量的情况下仅支持高斯核方法
|
legend
|
bool型,是否在图像上添加图例
|
cumulative
|
bool型,是否绘制核密度密度估计的累计分布,默认为False
|
shade_lowest
|
displot主要功能是
绘制单变量的直方图
,而且可以在直方图的基础之上加上kdeplot和rugplot的部分内容,其功能非常强大,其主要参数如下:
rugplot参数表
一维数组,传入观测值向量
|
height
|
设置每个观测点对应的小短条的高度,默认为0.05
|
字符型变量,观测值对应小短条所在的轴,默认为'x',即x轴
|
hist_kws
bool型,表示直方图高度代表的意义,默认为False
True:直方图高度表示对应的密度
False:对应的直方区间内记录值个数
3、强行拟合卡方分布并利用参数字典设置fit曲线颜色
ax = sns.distplot(x,color='r',rug=True,bins=20,kde=False,fit=None,
norm_hist=False,hist_kws={'alpha':0.6,'color':'orange'},
rug_kws={'color':'g'})
4、修改norm_hist参数为False使得纵轴显示的不再是密度而是频数(注意这里必须关闭kde和fit绘图的部分,否则纵轴依然显示密度),利用hist_kws传入字典调整直方图部分色彩和透明度,利用rug_kws传入字典调整rugplot部分小短条色彩:
五、jointplot
jointplot中聚合了kdeplot和rugplot中的相关内容,故放于最后进行介绍;
jointplot主要用于对成对变量的相关情况、联合分布及各自的分布呈现于一张图表,jointplot的主要参数如下:
displot参数表
以为数组形式,传入带分析的变量
|
int型变量,确定直方图中限制直方的数量,默认为None
|
bool型,是描绘制直方图,默认为True
|
bool型,是否绘制核密度估计曲线,默认为True
|
bool型,是否绘制对应的rugplot部分,默认为False
|
传入scipy_stats中的分布类型,用于
观察变量上抽取相关统计特征来强行拟合的分布
,默认为None,即不进行拟合
|
字典形式的输入,对应
hist原生函数
中的参数名称与参数值
|
kde_kws
|
rug_kws
|
color
|
控制除了fit部分拟合出的曲线之外的所有对象的色彩
|
vertical
|
bool型,是否颠倒x-y轴,默认为False
|
norm_hist
|
label
|
控制图像中的图例标签显示内容
|
代表待分析的成对变量,
有两种模式;
第一种模式:在参数data传入数据框时,x、y均传入字符串,指代数据框中的变量名;
第二种模式:在参数data为None时,x、y直接传入两个一维数组,不依赖数据框
joint_kws,
marginal_kws,
annot_kws
5、利用边缘图形参数字典为边缘图形添加rugplot的内容,并修改直方个数为15
ax = sns.jointplot(x=x,y=y,color='g',kind='reg',marginal_kws={'bins':15,'rug':True})
6、jointplot支持图层叠加
例:我们首先绘制出的联合图中kind限制为拟合线性回归直线,在此基础上利用.plot_joint方法叠加核密度估计图层:
ax = sns.jointplot(x=x,y=y,color='g',kind='reg').plot_joint(sns.kdeplot,n_levels=5)
jointplot参数表
与上一段中的说明相对应,代表数据框,默认为None
|
字符型,
展示成对变量相关情况
的主图中的样式
|
color
|
图像中对象的色彩
|
height
|
图像为正方形时的边长
|
ratio
|
int型,调节联合图与边缘图的相对比例,越大则边缘图越矮,默认为5
|
space
|
int型,用于控制联合图与边缘图的空白大小
|
xlim,ylim
|
设置x轴与y轴显示范围
|
传入参数字典来分别精细化控制每个组件
|