当前位置: 首页 > 后端技术 > Python

Python可视化-Seaborn5分钟介绍(三)——boxplot和violinplot

时间:2023-03-26 16:53:04 Python

微信公众号:《Python读钱》有任何问题或建议欢迎留言公众号Seaborn是一个基于matplotlib的Python可视化库。它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,无需大量调整,让绘图更简单,让你的图更精致。注:所有代码均在IPythonnotebook中实现boxplot箱线图(Box-plot),又称盒须图、箱线图或盒须图,是一种用来展示一组数据离散数据的统计图表。它可以显示一组数据的最大值、最小值、中值和上下四分位数。因其形状似盒而得名。它也经常被用在各个领域,经常被用在质量管理中。示意图如下:接下来介绍一下Seaborn中箱线图的具体实现方法,也就是箱线图的API:seaborn.boxplot(x=None,y=None,hue=None,data=None,order=无,hue_order=无,orient=无,颜色=无,调色板=无,饱和度=0.75,宽度=0.8,闪避=真,fliersize=5,线宽=无,whis=1.5,notch=假,ax=无,**kwargs)我们从一个具体的例子开始%matplotlibinlineimportpandasaspdimportnumpyasnpimportseabornassnsimportmatplotlib.pyplotaspltplt.rc("font",family="SimHei",size="15")#解决问题本文使用的中文乱码数据集为鸢尾花数据集data.head(6)x,y:列名(str)orvectordataindataframedata:dataframeorarraysns.boxplot(x=data["pw"],data=data)palette:调色板,控制图像的色调fig,axes=plt.subplots(1,2,sharey=True)sns.boxplot(x="catagory",y="pw",data=data,ax=axes[0])#Leftimagesns.boxplot(x="catagory",y="pw",data=data,palette="Set3",ax=axes[1])#右图hue(str):dataframe列名,根据列名中的值进行分类,形成分类柱状图sns.boxplot(x="color",y="pl",data=data,hue="catagory",palette="Set3")order,hue_order(listsofstrings):用于控制条形图的顺序sns.boxplot(x="catagory",y="pw",data=数据,palette="Set3",order=[2,1,0])orient:"v"|"h"用于控制图像是水平显示还是垂直显示(这个通常是根据输入变量的dtype推断的,x,y一般不传这个参数,只在传入数据时使用)fig,axes=plt.subplots(2,1)sns.boxplot(data=data,orient="v",palette="Set3",ax=axes[0])#垂直显示sns.boxplot(data=data,orient="h",palette="Set3",ax=axes[1])#水平显示fliersize:float,用于表示异常值观察的标记大小fig,axes=plt.subplots(1,2)sns.boxplot(x="color",y="pl",data=data,ax=axes[0])#fliersize默认为5sns.boxplot(x="color",y="pl",data=data,fliersize=20,ax=axes[1])whis:确定异常值的上下界(IQR超过低四分位数比值),超出此范围的点将被识别为异常值,IQR指的是上四分位数和下四分位数之间的差异。fig,axes=plt.subplots(1,2)sns.boxplot(x="color",y="pl",data=data,whis=1,ax=axes[0])#leftpicturesns.boxplot(x="color",y="pl",data=data,whis=2,ax=axes[1])#右图宽度:float,控制箱线图的宽度fig,axes=plt.subplots(1,2)sns.boxplot(x="color",y="pl",data=data,width=0.3,ax=axes[0])#左图sns.boxplot(x="color",y="pl",data=data,width=0.8,ax=axes[1])#右图violinplotviolinplot的作用类似于箱线图,它展示了定量数据在一个(或多个)分类变量的多个水平上的分布,这些分布可以比较。与所有绘图组件都对应于实际数据点的箱线图不同,小提琴图具有基础分布的核密度估计。具体用法如下:seaborn.violinplot(x=None,y=None,hue=None,data=None,order=None,hue_order=None,bw='scott',cut=2,scale='area',scale_hue=True,gridsize=100,width=0.8,inner='box',split=False,dodge=True,orient=None,linewidth=None,color=None,palette=None,饱和度=0.75,ax=None,**kwargs)示例中使用的数据集如下:data.head(6)这里不再介绍x,y,hue,data,order,hue_order,palette参数的用法。这些参数的用法和之前介绍的图文的用法再说一遍,有需要的可以查看之前的内容。先画一个violinplot:sns.violinplot(x="gender",y="age",data=data)split:设置split为true绘制一个splitviolinplot来比较两个按huesplitVolume:fig,axes=plt.subplots(2,1)ax=sns.violinplot(x="color",y="age",data=data,hue="smoker",split=True,ax=axes[0])#上图,splitpictureax=sns.violinplot(x="color",y="age",data=data,hue="smoker",ax=axes[1])#下图scale_hue:bool,当小提琴嵌套使用色调变量(色调参数),此参数确定缩放是在主分组变量的每个级别内(scale_hue=true)还是在图上的所有小提琴内(scale_hue=false)计算。图,axes=plt.subplots(2,1)ax=sns.violinplot(x="color",y="age",data=data,hue="smoker",split=True,scale_hue=False,ax=轴[0])#Aboveax=sns.violinplot(x="color",y="age",data=data,hue="smoker",split=True,scale_hue=True,ax=axes[1])#下面的imageorient:"v"|"h"用来控制图片是水平显示还是垂直显示(这个通常是根据输入变量的dtype推断的,这个参数一般不传x,y,只传传入数据时使用)fig,axes=plt.subplots(2,1)sns.violinplot(data=data[["height","weight","age"]],orient="v",ax=axes[0])#上图sns.violinplot(data=data[["height","weight","age"]],orient="h",ax=axes[1])#下图内图:controltheinterioroftheviolinplot有四种方式来表示数据点:'box','quartile','point','stick'。fig,axes=plt.subplots(2,2)sns.violinplot(x="color",y="age",data=data,inner="box",ax=axes[0,0])#pianomap显示里面的箱线图(左上)sns.violinplot(x="color",y="age",data=data,inner="quartile",ax=axes[0,1])#在钢琴图中显示四分之一的数字line(右上)sns.violinplot(x="color",y="age",data=data,inner="point",ax=axes[1,0])#在钢琴图中显示具体的数据点(bottomleft)sns.violinplot(x="color",y="age",data=data,inner="stick",ax=axes[1,1])#在钢琴贴图中显示具体的数据棒(右下))scale:该参数用于缩放每个小提琴的宽度,有“area”、“count”、“width”三种方式fig,axes=plt.subplots(3,1)sns.violinplot(x="color",y="age",data=data,scale="area",ax=axes[0])#如果是"area",每把小提琴都会有相同的面积(上图)sns.violinplot(x="color",y="age",data=data,scale="count",ax=axes[1])#如果是"count",小提琴的宽度会根据observ的个数缩放组中的信息(中间图像)sns。violinplot(x="color",y="age",data=data,scale="width",ax=axes[2])#如果是“age”,每把小提琴都会有相同的宽度(下)切:float,distance,inbandwidthsize,控制小提琴图外壳超出内部极值数据点的密度。设置为0以将小提琴范围限制为观察数据的范围(即,与ggplot中的trim=true具有相同的效果)fig,axes=plt.subplots(2,1)sns.violinplot(x="age",y="gender",data=data,ax=axes[0])#上图sns.violinplot(x="age",y="gender",data=data,cut=0,ax=axes[1])#下图width:float,控制钢琴图的宽度(比例)fig,axes=plt.subplots(2,1)sns.violinplot(x="color",y="age",data=data,ax=axes[0],width=0.5)#上图sns.violinplot(x="color",y="age",data=data,ax=axes[1],width=0.9)#The下图已经是Seaborn入门系列的第三篇文章了。相信大家对Seaborn的绘图流程都有一个大概的了解,也能体会到用Seaborn绘图比matplotlib更简单。以上内容是我结合官方文档和自己的理解写的。如有错误,可以指出并提出意见,共同交流,共同进步。也希望我写的能对你看完这篇文章有所帮助。!扫描二维码关注公众号《Python读钱》,干货第一时间获取!