温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python怎么使用plt.boxplot()函数绘制箱图

发布时间:2022-08-13 09:59:40 来源:亿速云 阅读:202 作者:iii 栏目:开发技术

这篇文章主要介绍“Python怎么使用plt.boxplot()函数绘制箱图”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么使用plt.boxplot()函数绘制箱图”文章能帮助大家解决问题。

    1. 箱图含义

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

    Python怎么使用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
    
    #生成data数据
    np.random.seed(100)
    data = np.random.normal(size=(1000,),loc=0,scale=1)
    
    # 绘图
    plt.boxplot(data)
    plt.show()

    Python怎么使用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()

    Python怎么使用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:
        """
    	# 根据snrr范围对redchi进行筛选。
        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<=snrr<10', '10<=snrr<15', '15<=snrr<20', '20<=snrr<30', '30<=snrr'], fontsize=8)
    	#	保存图片 
        plt.savefig('./images/box.jpg')
        plt.show()
    
    if __name__ == '__main__':
        df = pd.read_csv('./inputfile/lamost6w_new.csv')
        df_sc = screening(df)  # 筛选数据 (lamost数据应该在正常值范围内,不然因为数值差过大会导致绘制不出图像!)
        plt_box_iamge(df_sc)

    Python怎么使用plt.boxplot()函数绘制箱图

    3.3 参数详解

    plt.boxplot(x,                      # x:指定要绘制箱图的数据
                notch=None,           # notch:是否是凹口的形式展现箱线图,默认非凹口
                sym=None,              # sym:指定异常点的形状,默认为+号显示
                vert=None,              # vert:是否需要将箱线图垂直摆放,默认垂直摆放
                whis=None,             # whis:指定上下须与上下四分位的距离,默认为1.5倍的四分位差
                positions=None,   # positions:指定箱线图的位置,默认为[0,1,2…]
                widths=None,         # widths:指定箱线图的宽度,默认为0.5
                patch_artist=None,        # patch_artist:是否填充箱体的颜色
                meanline=None,             # meanline:是否用线的形式表示均值,默认用点来表示
                showmeans=None,       # showmeans:是否显示均值,默认不显示
                showcaps=None,           # showcaps:是否显示箱线图顶端和末端的两条线,默认显示
                showbox=None,             # showbox:是否显示箱线图的箱体,默认显示
                showfliers=None,          # showfliers:是否显示异常值,默认显示
                boxprops=None,           # boxprops:设置箱体的属性,如边框色,填充色等
                labels=None,                  # labels:为箱线图添加标签,类似于图例的作用
                flierprops=None,          # filerprops:设置异常值的属性,如异常点的形状、大小、填充色等
                medianprops=None,   # medianprops:设置中位数的属性,如线的类型、粗细等
                meanprops=None,       # meanprops:设置均值的属性,如点的大小、颜色等
                capprops=None,           # capprops:设置箱线图顶端和末端线条的属性,如颜色、粗细等
                whiskerprops=None)   # whiskerprops:设置须的属性,如颜色、粗细、线的类型等

    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])                               # 设置x轴值的范围  rotation=30
    # ax.set_xticks()  							      # 自定义x轴的值
    ax.set_xlabel("xlabel")                  # 设置x轴的标签
    ax.set_xticklabels(['A','B','C','D'],  rotation=30,fontsize=10)   # 设置x轴坐标值的标签 旋转角度 字体大小
    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()

    关于“Python怎么使用plt.boxplot()函数绘制箱图”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI