• x,y:指定的x轴, y轴数据,可以是向量或者字符串,当是字符串时,一定是data中的一个key
  • hue:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key),seaborn将根据这一列设置不同颜色
  • data:绘图数据,可以是pandas.DataFrame,numpy.ndarray或者字典等
  • order:包含所有分组属性的列表,用于指定条形顺序,注意如果某个分组不在order中,该分组将不会显示
  • hue_order:字符串组成的list,设置hue后设置各颜色顺序
  • orient:当x,y都是离散型或者数值型数据时,通过orient可设置图像方向
  • color:统一设置所有箱体的颜色
  • palette:颜色面板
  • saturation:颜色饱和度
  • width:设置箱体宽度
  • dodge:是否重叠绘制(设置hue之后生效)
  • fliersize:箱体上方离群点的大小
  • linewidth:箱体边框线的粗细
  • whis:确定离群值的上下界(IQR超过低和高四分位数的比例),此范围之外的点将被识别为异常值。IQR指的是上下四分位的差值。
  • fig, ax =plt.subplots(1,2,constrained_layout=True, figsize=(8, 3))
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[0])
    pic.set_title('x="day", y="total_bill"')
    pic = sns.boxplot(x="total_bill", y="day", data=tips, ax=ax[1])
    pic.set_title('x="total_bill", y="day"')
    
    fig, ax =plt.subplots(1,2,constrained_layout=True, figsize=(8, 3))
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[0], hue="smoker")
    pic.set_title('hue="smoker"')
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[1], hue="smoker", dodge=False)
    pic.set_title('hue="smoker", dodge=False')
    
    fig, ax =plt.subplots(1,2,constrained_layout=True, figsize=(8, 3))
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[0])
    pic.set_title('default order')
    pic = sns.boxplot(x="day", y="total_bill", data=tips, order=['Sun', 'Sat', 'Thur', 'Fri'], ax=ax[1])
    pic.set_title('"Sun", "Sat", "Thur", "Fri"')
    
    fig, ax =plt.subplots(1,2,constrained_layout=True, figsize=(8, 3))
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[0])
    pic.set_title('default width')
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[1], width=0.5)
    pic.set_title('width=0.5')
    
    fig, ax =plt.subplots(1,2,constrained_layout=True, figsize=(8, 3))
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[0])
    pic.set_title('default fliersize: 5')
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[1], fliersize=1)
    pic.set_title('fliersize=1')
    
    fig, ax =plt.subplots(1,3,constrained_layout=True, figsize=(8, 3))
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[0])
    pic.set_title('default linewidth')
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[1], linewidth=1)
    pic.set_title('linewidth=1')
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[2], linewidth=5)
    pic.set_title('linewidth=5')
    
    fig, ax =plt.subplots(1,3,constrained_layout=True, figsize=(8, 3))
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[0])
    pic.set_title('default whis: 1.5')
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[1], whis=2)
    pic.set_title('whis=2')
    pic = sns.boxplot(x="day", y="total_bill", data=tips, ax=ax[2], whis=3)
    pic.set_title('whis=3')
    

    2 增强箱型图:boxenplot()

    boxenplot()是为更大的数据集绘制增强的箱型图。这种风格的绘图最初被命名为“信值图”,因为它显示了大量被定义为“置信区间”的分位数。它类似于绘制分布的非参数表示的箱形图,其中所有特征对应于实际观察的数值点。通过绘制更多分位数,它提供了有关分布形状的更多信息,特别是尾部数据的分布。

    作为增强版的boxplot(),boxenplot()大部分参数和boxplot()是相似的。现在就剩下不同的参数进行说明:

    k_depth:“proportion” 或 “tukey” 或 “trustworthy”,也可以是标量整数,通过增大百分比的粒度控制绘制的盒形图数目。每个参数代表利用不同的统计特性对异常值的数量做出不同的假设。

    scale:“linear” 或 “exponential” 或 “area”,用于控制增强箱型图宽度的方法。所有参数都会给显示效果造成影响。 “linear” 通过恒定的线性因子减小宽度,“exponential” 使用未覆盖的数据的比例调整宽度, “area” 与所覆盖的数据的百分比成比例。

    outlier_prop:float,被认为是异常值的数据比例。与 k_depth 结合使用以确定要绘制的百分位数。默认值为 0.007 作为异常值的比例。该参数取值应在[0,1]范围内。

    3 小提琴图:violinplot()

    violinplot()是用来绘制箱形图和核密度估计组合图,即小提琴图。小提琴形图的作用与箱形图类似,它显示了一个或多个分类变量的几个级别的定量数据的分布,我们可以通过观察来比较这些分布。与盒形图不同,因为盒形图的所有绘图组件都对应于实际数据点,小提琴形图具有底层分布的核密度估计。

  • x,y:指定的x轴, y轴数据,可以是向量或者字符串,当是字符串时,一定是data中的一个key
  • hue:可以是向量(pandas中的一列,或者是list),也可以是字符串(data中的一个key),seaborn将根据这一列设置不同颜色
  • data:绘图数据,可以是pandas.DataFrame,numpy.ndarray或者字典等
  • order:包含所有分组属性的列表,用于指定条形顺序,注意如果某个分组不在order中,该分组将不会显示
  • hue_order:字符串组成的list,设置hue后设置各颜色顺序
  • bw:'scott','silverman'或float数值,计算内核带宽时使用的引用规则的名称或比例因子。实际内核大小将通过将比例因子乘以每个bin中数据的标准差来确定。
  • cut:以带宽大小为单位的距离,用于将密度扩展到超过极端数据点。设置为0可将小提琴范围限制在观测数据范围内(即,与ggplot中的trim=true具有相同的效果)
  • scale:“area”, “count”, “width”,用于缩放每个小提琴宽度。如果是“area”,每个小提琴都会有相同的区域。如果“count”,小提琴的宽度将按照该箱中的观察次数进行缩放。如果“width”,每个小提琴将具有相同的宽度
  • gridsize:用于计算核密度估计的离散网格中的点数
  • width:设置箱体宽度
  • inner:'box','quartile','point','stick',None,表示小提琴内部的数据点。如果是框,画一个微型箱图。如果是四分位数,则绘制分布的四分位数。如果point或stick,则显示每个基础数据点。使用None将绘制未经修饰的小提琴
  • split:当使用带有两个级别的变量的色调嵌套(hue)时,将split设置为True将为每个级别绘制一半小提琴。这样可以更容易比较分布。
  • dodge:是否重叠绘制(设置hue之后生效)
  • orient:当x,y都是离散型或者数值型数据时,通过orient可设置图像方向
  • linewidth:箱体边框线的粗细
  • color:统一设置所有箱体的颜色
  • palette:颜色面板
  • saturation:颜色饱和度
  • ax:自定义坐标系
  • fig, ax =plt.subplots(1,2,constrained_layout=True, figsize=(8, 3))
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[0])
    pic.set_title('x="day", y="total_bill"')
    pic = sns.violinplot(x="total_bill", y="day", data=tips, ax=ax[1])
    _ = pic.set_title('x="total_bill", y="day"')
    
    fig, ax =plt.subplots(1,2,constrained_layout=True, figsize=(8, 3))
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[0], hue="smoker")
    pic.set_title('hue="smoker"')
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[1], hue="smoker", dodge=False)
    _ = pic.set_title('hue="smoker", dodge=False')
    
    fig, ax =plt.subplots(1,2,constrained_layout=True, figsize=(8, 3))
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[0])
    pic.set_title('default order')
    pic = sns.violinplot(x="day", y="total_bill", data=tips, order=['Sun', 'Sat', 'Thur', 'Fri'], ax=ax[1])
    _ = pic.set_title('"Sun", "Sat", "Thur", "Fri"')
    
    fig, ax =plt.subplots(1,2,constrained_layout=True, figsize=(12, 3))
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[0], hue="smoker")
    pic.set_title('no split')
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[1], hue="smoker", split=True)
    pic.set_title('split=True')
    
    fig, ax =plt.subplots(1,3,constrained_layout=True, figsize=(8, 3))
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[0])
    pic.set_title('default linewidth')
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[1], linewidth=1)
    pic.set_title('linewidth=1')
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[2], linewidth=5)
    pic.set_title('linewidth=5')
    
    fig, ax =plt.subplots(1,2,constrained_layout=True, figsize=(12, 3))
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[0])
    pic.set_title('default width')
    pic = sns.violinplot(x="day", y="total_bill", data=tips, ax=ax[1], width=1)
    _ = pic.set_title('width=1')