sns.distplot()用法
sns.distplot()集合了matplotlib的hist()于sns.kdeplot()功能,增了rugplot分布观测显示与理由scipy库fit拟合参数分布的新颖用途
#参数如下 sns.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)
直方图:先分箱,然后计算每个分箱频数的数据分布,
和条形图的区别,条形图有空隙,直方图没有,条形图一般用于类别特征,直方图一般用于数字特征(连续型)
多用于y值和数字(连续型)特征的分布画图
import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns sns.set() #切换到sns的默认运行配置 x=np.random.randn(100) sns.distplot(x)
通过hist和kde参数调节是否显示直方图及核密度估计(默认hist,kde均为True)
fig,axes=plt.subplots(1,3) #创建一个1行三列的图片 sns.distplot(x,ax=axes[0]) sns.distplot(x,hist=False,ax=axes[1]) #不显示直方图 sns.distplot(x,kde=False,ax=axes[2]) #不显示核密度
bins:int或list,控制直方图的划分
#bins fig,axes=plt.subplots(1,2) sns.distplot(x,kde=False,bins=20,ax=axes[0]) #分成20个区间 sns.distplot(x,kde=False,bins=[x for x in range(4)],ax=axes[1]) #以0,1,2,3为分割点,形成区间[0,1],[1,2],[2,3],区间外的值不计入。
rag:控制是否生成观测数值的小细条
#rag fig,axes=plt.subplots(1,2) sns.distplot(x,rug=True,ax=axes[0]) #左图 sns.distplot(x,ax=axes[1]) #右图
fit:控制拟合的参数分布图形,能够直观地评估它与观察数据的对应关系(黑色线条为确定的分布)
#fit from scipy.stats import * sns.distplot(x,hist=False,fit=norm) #拟合标准正态分布
hist_kws, kde_kws, rug_kws, fit_kws参数接收字典类型,可以自行定义更多高级的样式
# sns.distplot(x,kde_kws={"label":"KDE"},vertical=True,color="y")
norm_hist:若为True, 则直方图高度显示密度而非计数(含有kde图像中默认为True)
#norm_hist fig,axes=plt.subplots(1,2) sns.distplot(x,norm_hist=True,kde=False,ax=axes[0]) #左图 sns.distplot(x,kde=False,ax=axes[1]) #右图
全部代码
1 import matplotlib.pyplot as plt 2 import numpy as np 3 import pandas as pd 4 import seaborn as sns 5 sns.set() #切换到sns的默认运行配置 6 7 x=np.random.randn(100) 8 sns.distplot(x) 9 10 11 fig,axes=plt.subplots(1,3) #创建一个1行三列的图片 12 sns.distplot(x,ax=axes[0]) 13 sns.distplot(x,hist=False,ax=axes[1]) #不显示直方图 14 sns.distplot(x,kde=False,ax=axes[2]) #不显示核密度 15 16 17 #bins 18 fig,axes=plt.subplots(1,2) 19 sns.distplot(x,kde=False,bins=20,ax=axes[0]) #分成20个区间 20 sns.distplot(x,kde=False,bins=[x for x in range(4)],ax=axes[1]) #以0,1,2,3为分割点,形成区间[0,1],[1,2],[2,3],区间外的值不计入。 21 22 23 #rag 24 fig,axes=plt.subplots(1,2) 25 sns.distplot(x,rug=True,ax=axes[0]) #左图 26 sns.distplot(x,ax=axes[1]) #右图 27 28 29 #fit 30 from scipy.stats import * 31 sns.distplot(x,hist=False,fit=norm) #拟合标准正态分布 32 33 34 # 35 sns.distplot(x,kde_kws={"label":"KDE"},vertical=True,color="y") 36 37 #norm_hist 38 fig,axes=plt.subplots(1,2) 39 sns.distplot(x,norm_hist=True,kde=False,ax=axes[0]) #左图 40 sns.distplot(x,kde=False,ax=axes[1]) #右图