相关文章推荐
灰常酷的手套  ·  PaddleOCR windows ...·  9 月前    · 
沉着的太阳  ·  ios mui picker 滑动错位 ...·  1 年前    · 
胡子拉碴的卤蛋  ·  keil ...·  1 年前    · 

一、seaborn介绍

seaborn是python中基于Matplotlib包具有更多可视化效果和更多风格的可视化模块,可以说是Matplotlib的封装。当我们想要 探索单个或者一对数据分布上的特征 时,可以使用seaborn中内置的若干函数对数据的分布进行多种多样的可视化。

二、 kdeplot

对于 单变量和双变量进行核密度估计 ,并可视化,参数表如下:

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)

三、rugplot

  用于绘制出一维数组中数据点实际的分布位置情况,即不添加任何数学意义上的拟合,只是单纯的记录值在坐标轴上进行展示,相当于kdeplot,可以展示出数据的离散分布情况。参数表如下:

kdeplot参数表
一维数组,单变量时作为唯一的量 data2 格式同data,单变量时不输入,双变量是作为第2个输入变量 shade bool型,是否对核密度估计曲线下的面积进行色彩填充,默认为False vertical bool型,是否颠倒x-y轴位置(单变量输入时有效) kernel 字符型,核密度估计的方法,默认为‘gau’,即高斯核,且在2维变量的情况下仅支持高斯核方法 legend bool型,是否在图像上添加图例 cumulative bool型,是否绘制核密度密度估计的累计分布,默认为False shade_lowest

四、 displot

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轴显示范围 传入参数字典来分别精细化控制每个组件