plt.boxplot()函数绘制箱图、常用方法及含义详解

plt.boxplot()函数绘制箱图、常用方法及含义详解

; 1. 箱图含义

箱图是一中用于统计数据分布的统计图,也可以粗略地看出数据是否具有对称性,分布的分散程度等信息。箱图中的信息含义如下:

plt.boxplot()函数绘制箱图、常用方法及含义详解
  • 最下方的横线表示最小值
  • 最上方的横线表示最大值
  • 黑色空心圆圈表示异常值
  • 黑色实心圆圈表示极端值
  • 箱子由下四分位数、中值以及上四分位数组成

    异常值又称离群值,指大于1.5倍的四分位数间距的值。处于1.5倍~3倍四分位数间距的值用空心圆圈表示。极端值属于异常值中的一种。
    极端值是指大于3倍的四分位数间距的值。

2.计算方法

首先找出一组数据的五个特征值,包括除异常值外的最小值(minimum)和最大值(maximum)、中位数(median)、两个四分位数(上四分位数Q1和下四分位Q3数);
中位数:将所有数值 从小到大排列,如果是 奇数个数值则取最中间一个值作为中位数,之后最中间的值在计算Q1和Q3时 不再使用偶数个数值则取最中间两个数的平均数作为中位数,这两个数在计算Q1和Q3时 继续使用
Q1:中位数将所有数据分成两部分, 最小值到中位数的部分按取中位数的方法取中位数作为Q1。
Q3:同Q1取法,取 中位数到最大值的中位数。
IQR(四分位数间距)= Q3-Q1
所有不在(Q1-1.5IQR,Q3+1.5IQR)的区间内的数为 离群值,剩下的值最大的为最大值,最小的为最小值。
特征值(从下到上):最小值、Q1、中位数、Q3、最大值
将五个数值描绘在一个图上,五个特征值 在一个直线上,最小值和Q1连接起来,Q1、中位数、Q3分别作 平行等长线段
然后,连接两个四分位数构成箱子。
最后连接两个极值点与箱子,形成箱式图,然后点上离群值即可。

3.绘图

3.1 绘制单个箱图

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(100)
data = np.random.normal(size=(1000,),loc=0,scale=1)

plt.boxplot(data)
plt.show()

plt.boxplot()函数绘制箱图、常用方法及含义详解

3.2 绘制多个箱图

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(100)
data = np.random.normal(size=(1000,4),loc=0,scale=1)

plt.boxplot(data)

plt.show()

plt.boxplot()函数绘制箱图、常用方法及含义详解

3.3实战

def plt_box_iamge(df):
"""
    snrr的五个范围为[5,10)、[10,15)、[15,20)、[20,30)、[30-),按照五个snrr范围计算对应redchi的箱图
    :param df:包含snrr以及redchi的csv数据(dataFrame)。
    :return:
"""

    df1 = df.loc[df['lam_snrr'] >= 5]
    redchi_1 = df1.loc[df1['lam_snrr'] < 10].redchi

    df2 = df.loc[df['lam_snrr'] >= 10]
    redchi_2 = df2.loc[df2['lam_snrr'] < 15].redchi

    df3 = df.loc[df['lam_snrr'] >= 15]
    redchi_3 = df3.loc[df3['lam_snrr'] < 20].redchi

    df4 = df.loc[df['lam_snrr'] >= 20]
    redchi_4 = df4.loc[df4['lam_snrr'] < 30].redchi

    redchi_5 = df.loc[df['lam_snrr'] >= 30].redchi

    ax = plt.subplot()
    ax.boxplot([redchi_1, redchi_2, redchi_3, redchi_4, redchi_5])

    ax.set_xticklabels(['5, '10, '15, '20, '30], fontsize=8)

    plt.savefig('./images/box.jpg')
    plt.show()

if __name__ == '__main__':
    df = pd.read_csv('./inputfile/lamost6w_new.csv')
    df_sc = screening(df)
    plt_box_iamge(df_sc)

plt.boxplot()函数绘制箱图、常用方法及含义详解

3.3 参数详解

plt.boxplot(x,
            notch=None,
            sym=None,
            vert=None,
            whis=None,
            positions=None,
            widths=None,
            patch_artist=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)

3.4 常用方法

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(100)
data = np.random.normal(size=(1000,4),loc=0,scale=1)

ax = plt.subplot()
ax.boxplot(data)
ax.set_xlim([0,5])

ax.set_xlabel("xlabel")
ax.set_xticklabels(['A','B','C','D'],  rotation=30,fontsize=10)
ax.set_title("xcy")
ax.legend(labels= ['A','B','C','D'],loc='best',)
ax.text(x=0.2 , y=3.5 , s="test" ,fontsize=12)

plt.show()

参考:
百度百科
matplotlib官方文档

Original: https://blog.csdn.net/qq_45807032/article/details/112974494
Author: xcy.小相
Title: plt.boxplot()函数绘制箱图、常用方法及含义详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/693960/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球