核密度估计用来估计未知的密度函数,是非参数检验之一。直观上来看是平滑后的直方图。核密度估计方法不利用有关数据分布的先验知识,对数据分布不附加任何假定,是一种从数据样本本身出发研究数据分布特征的方法,因而,在统计学理论和应用领域均受到高度的重视。
函数:seaborn.kdeplot
常用参数:
data | array,用于绘制核密度图的数据 |
data2 | array,如果传入数据,将估计双变量核密度。 |
vertical | bool,指定y轴还是x轴为密度。 |
kernal | “gau”“cos”“biw”“epa”“ri”“triw”,选择核函数。双变量只能使用“gau”高斯核密度 |
shade | bool,是否在kde曲线下着色。 |
gridsize | int,网格中离散点个数,默认为100. |
cumulative | bool,是否绘制累积分布,默认为False |
cbar | bool,是否添加颜色棒,默认为False。 |
iris=sns.load_dataset('iris')
iris.head()
>
sepal_lengthsepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa
fig,axes=plt.subplots(1,2,figsize=(8,4))
#绘制单变量核密度图
sns.kdeplot(iris['petal_length'],ax=axes[0],shade=True,color='y')
#绘制双变量核密度图
sns.kdeplot(iris['sepal_length'],iris['sepal_width'],ax=axes[1],shade=False,cbar=True)
绘制两个阴影的双变量密度图:
setosa=iris.loc[iris.species=='setosa']
virginica=iris.loc[iris.species=='virginica']
sns.kdeplot(setosa.sepal_width,setosa.sepal_length,cmap='Reds',shade=True)
sns.kdeplot(virginica.sepal_width,virginica.sepal_length,cmap="Blues",shade=True)
rugplot函数用来绘制地毯图,地毯图可以认为是数据刻度,用来辅助显示数据的分布特点。
函数:seaborn.rugplot
常用参数:
a | array,表示添加刻度的数据。 |
height | float,刻度的高度,默认为0.05. |
axis | 接收x或y,指定添加刻度的轴。 |
ax | 接收绘图对象,选择在哪个图中绘制刻度。 |
tips=sns.load_dataset('tips')
sns.rugplot(tips.total_bill,height=0.08)
在核密度图上添加地毯图:
sns.kdeplot(tips.total_bill)
sns.rugplot(tips.total_bill,height=0.08)
是hist函数的升级版,它集合了hist函数和kdeplot函数的功能,添加了rugplot分布观测条显示与利用scipy库拟合参数分布的新用途。
函数:seaborn.distplot
常用参数:
a | 接收series,list,array,表示观察数据,如果是具有name属性的series对象,则该名称将用于标记数据轴。 |
bin | int,表示长方形数目,默认为“auto” |
hist | bool,是否绘制直方图。默认为True |
kde | bool,是否绘制高斯核密度估计,默认为False |
rug | bool,是否添加地毯刻度,默认为False |
fit | 接收随机变量对象,用来拟合分布。 |
color | 表示除了拟合曲线外的所有内容的颜色。 |
{hist,kde,rug,fit}_kws | 接受字典,表示底层绘图函数的关键字参数。 |
import pandas as pd
from scipy.stats import norm
import numpy as np
np.random.seed(1)
x=np.random.normal(size=100)
pic=plt.figure(figsize=(8,8))
data=pd.Series(x,name='data')#添加name属性
#使用默认参数绘图
pic.add_subplot(2,2,1)
sns.distplot(data)
#去除直方图,添加地毯图
pic.add_subplot(2,2,2)
sns.distplot(x,hist=False,rug=True)
#正态拟合参数分布,改变整体颜色
pic.add_subplot(2,2,3)
sns.distplot(x,fit=norm,kde=False,color='y')
#修改底层绘图函数参数
pic.add_subplot(2,2,4)
sns.distplot(x,rug=True,rug_kws={'color':"r"},kde_kws={'color':'k','lw':2,'label':'kde',"color":'b'},hist_kws={'histtype':'step','linewidth':2,'alpha':1,'color':'y'})