美文网首页
Python matplotlib customize boxp

Python matplotlib customize boxp

作者: 王叽叽的小心情 | 来源:发表于2022-06-21 20:52 被阅读0次

python环境下绘制箱线图,默认会有median line,且颜色是黄色的,想要修改颜色或者把median line去除掉,或者是修改箱的颜色,总之需要自定义boxplot样式,下面对这个函数进行解释。

1. matplotlib的boxplot的参数

函数如下:
matplotlib.pyplot.boxplot(x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, meanline=None, showmeans=None, showcaps=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None, *, data=None)

参数解释可以参见官网https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.boxplot.html#matplotlib.pyplot.boxplot

下面是箱线图的构成,上分位数和下分位数构成箱的主体,中间是中位数,然后是上下分位数减去1.5倍的箱的长度(这个1.5参数可以重新设置),fliers即是通俗意义上的异常值outlier。

箱线图的构成
2. boxplot的返回值类型

Matplotlib boxplot函数返回一个字典,将boxplot的每个组件映射到创建的Line2D实例列表。该字典有以下键(假设是垂直箱线图):

  • boxes: 箱线图主体,显示分位数和中位数置信区间
  • medians: 每个box上面的中位数横线
  • whiskers: 腮须,是延伸到两端的竖线,是非异常值的点
  • caps: 是whiskers末端的水平的线
  • fliers: 表征那些超出whiskers的异常点
  • means: 表示平均值的点或者线

因此,只要对这些返回的组件进行处理即可自定义boxplot。

3. 自定义matplotlib的boxplot
  • 绘制分组箱线图的代码如下:
# 分组箱线图
bp = axs[i].boxplot(y_group, showfliers=False, widths=[i * 0.25 for i in pos], labels=None, positions=pos,
                    patch_artist=True, boxprops=dict(linewidth=1.5), meanline=False)
  • 修改箱线图的颜色,修改为黑色
[patch.set(alpha=None, facecolor=(0, 0, 0, 0)) for patch in bp['boxes']]
  • 隐藏箱线图的中位值线,取巧把linewidth修改为0
[median.set(linewidth=0) for median in bp['medians']]
  • 修改异常点的特征样式
# changing style of fliers 
for flier in bp['fliers']: 
    flier.set(marker ='D', 
              color ='#e7298a', 
              alpha = 0.5) 

差不多就是这个套路啦,也很简单~

参考资料:
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.boxplot.html#matplotlib.pyplot.boxplot
https://www.pythonpool.com/matplotlib-boxplot/

相关文章

网友评论

      本文标题:Python matplotlib customize boxp

      本文链接:https://www.haomeiwen.com/subject/xxyevrtx.html