微信公众号:《Python读钱》有任何问题或建议欢迎留言公众号Seaborn是一个基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,无需大量调整,让绘图更简单,让你的图更精致。Seaborn安装>>>pipinstallseaborn安装好Seaborn包后,我们就开始进入下一步的学习。首先介绍一下kdeplot的绘制方法。注:所有代码均在IPython笔记本中实现kdeplot(kerneldensityestimation)核密度估计(kerneldensityestimation)在概率论中用于估计未知密度函数,是非参数测试方法之一。通过核密度估计图可以更直观地看出数据样本本身的分布特征。具体用法如下:seaborn.kdeplot(data,data2=None,shade=False,vertical=False,kernel='gau',bw='scott',gridsize=100,cut=3,clip=None,legend=True,cumulative=False,shade_lowest=True,cbar=False,cbar_ax=None,cbar_kws=None,ax=None,kwargs)我们通过一些具体的例子来学习一些参数的用法:首先导入相应的库%matplotlibinline#IPythonnotebook中的神奇方法,让每次运行后直接获取图像,不再需要使用plt.show()importnumpyasnp#导入numpy包,用于生成数组importseabornassns#习惯了简称snssns.set()sns.set()#切换到seaborn默认运行配置绘制简单的一维kde图像x=np.random.randn(100)#随机生成100个符合正态分布的数sns.kdeplot(x)cut:该参数表示绘图时切割带宽到数轴极限值多少(默认为3)sns.kdeplot(x,cut=0)cumulative:是否绘制累积分布sns.kdeplot(x,cumulative=True)shade:如果为True,则在kde曲线下方的区域进行阴影处理,颜色控制颜色curveandtheshadowsns.kdeplot(x,shade=True,color="g")vertical:表示绘制在X轴还是Y轴sns.kdeplot(x,vertical=True)binarykdeimagey=np.random.randn(100)sns.kdeplot(x,y,shade=True)cbar:如果参数为True,会添加一个颜色条(colorgang只在二进制kde图像中有)sns.kdeplot(x,y,shade=True,cbar=True)接下来学习更强大的distplotdistplotdisplot()结合了matplotlib的hist()和核函数估计kdeplot的函数增加了新颖的使用rugplot分布观察条显示和使用scipy库拟合拟合参数分布。具体用法如下:seaborn.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)首先介绍一下直方图(Histograms):直方图,又称质量分布图,是表示变化的主要工具数据。利用直方图可以分析数据的规律性,更直观地看出产品质量特征的分布状态。数据分布一目了然,便于判断整体质量分布。直方图通过沿数据范围形成分箱然后绘制条形图来显示落入每个分箱的观测值的数量来表示数据的分布。下面我们通过具体的例子来体验一下distplot的用法:sns.distplot(x,color="g")通过hist和kde参数调整是否显示直方图和核密度估计(默认hist,kde都是True)importmatplotlib。pyplotaspltfig,axes=plt.subplots(1,3)#创建一行三列的画布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,控制直方图的划分fig,axes=plt.subplots(1,2)sns.distplot(x,kde=False,bins=20,ax=axes[0])#左图:分成20个区间sns.distplot(x,kde=False,bins=[xforxinrange(4)],ax=axes[1])#右图:以0,1,2,3为分界点,组成区间[0,1],[1,2],[2,3],区间外的值不计入。rag:控制是否生成观察值的小条带fig,axes=plt.subplots(1,2)sns.distplot(x,rug=True,ax=axes[0])#leftpicturesns.distplot(x,ax=axes[1])#右图fit:控制拟合参数分布图,可以直观评价其与观测数据的对应关系(黑线为确定的分布)fromscipy.statsimport*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)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])#右图还有其他参数这里不一一介绍,有兴趣继续深入学习的同学可以查看Seaborn的官方文档。以上内容是我结合官方文档和自己的理解写的。如有错误,可以指出并提出意见,共同交流,共同进步。也希望我写的这些能给你看完这篇文章后或多或少带来一些体会。快来帮忙!扫描二维码关注公众号《Python读钱》,干货第一时间获取!
