溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python怎么使用plt.boxplot()函數(shù)繪制箱圖

發(fā)布時(shí)間:2022-08-13 09:59:40 來源:億速云 閱讀:196 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Python怎么使用plt.boxplot()函數(shù)繪制箱圖”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“Python怎么使用plt.boxplot()函數(shù)繪制箱圖”文章能幫助大家解決問題。

    1. 箱圖含義

    箱圖是一中用于統(tǒng)計(jì)數(shù)據(jù)分布的統(tǒng)計(jì)圖,也可以粗略地看出數(shù)據(jù)是否具有對稱性,分布的分散程度等信息。箱圖中的信息含義如下:

    Python怎么使用plt.boxplot()函數(shù)繪制箱圖

    最下方的橫線表示最小值最上方的橫線表示最大值黑色空心圓圈表示異常值黑色實(shí)心圓圈表示極端值箱子由下四分位數(shù)、中值以及上四分位數(shù)組成

    異常值又稱離群值,指大于1.5倍的四分位數(shù)間距的值。處于1.5倍~3倍四分位數(shù)間距的值用空心圓圈表示。極端值屬于異常值中的一種。
    極端值是指大于3倍的四分位數(shù)間距的值。

    2.計(jì)算方法

    首先找出一組數(shù)據(jù)的五個(gè)特征值,包括除異常值外的最小值(minimum)和最大值(maximum)、中位數(shù)(median)、兩個(gè)四分位數(shù)(上四分位數(shù)Q1和下四分位Q3數(shù));

    中位數(shù):將所有數(shù)值從小到大排列,如果是奇數(shù)個(gè)數(shù)值則取最中間一個(gè)值作為中位數(shù),之后最中間的值在計(jì)算Q1和Q3時(shí)不再使用;偶數(shù)個(gè)數(shù)值則取最中間兩個(gè)數(shù)的平均數(shù)作為中位數(shù),這兩個(gè)數(shù)在計(jì)算Q1和Q3時(shí)繼續(xù)使用。

    Q1:中位數(shù)將所有數(shù)據(jù)分成兩部分,最小值到中位數(shù)的部分按取中位數(shù)的方法取中位數(shù)作為Q1。

    Q3:同Q1取法,取中位數(shù)到最大值的中位數(shù)。

    IQR(四分位數(shù)間距)=Q3-Q1。

    所有不在(Q1-1.5IQR,Q3+1.5IQR)的區(qū)間內(nèi)的數(shù)為離群值,剩下的值最大的為最大值,最小的為最小值。

    特征值(從下到上):最小值、Q1、中位數(shù)、Q3、最大值

    將五個(gè)數(shù)值描繪在一個(gè)圖上,五個(gè)特征值在一個(gè)直線上,最小值和Q1連接起來,Q1、中位數(shù)、Q3分別作平行等長線段,
    然后,連接兩個(gè)四分位數(shù)構(gòu)成箱子。

    最后連接兩個(gè)極值點(diǎn)與箱子,形成箱式圖,然后點(diǎn)上離群值即可。

    3.繪圖

    3.1 繪制單個(gè)箱圖

    import matplotlib.pyplot as plt
    import numpy as np
    
    #生成data數(shù)據(jù)
    np.random.seed(100)
    data = np.random.normal(size=(1000,),loc=0,scale=1)
    
    # 繪圖
    plt.boxplot(data)
    plt.show()

    Python怎么使用plt.boxplot()函數(shù)繪制箱圖

    3.2 繪制多個(gè)箱圖

    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()函數(shù)繪制箱圖

    3.3實(shí)戰(zhàn)

    def plt_box_iamge(df):
        """
        snrr的五個(gè)范圍為[5,10)、[10,15)、[15,20)、[20,30)、[30-),按照五個(gè)snrr范圍計(jì)算對應(yīng)redchi的箱圖
        :param df:包含snrr以及redchi的csv數(shù)據(jù)(dataFrame)。
        :return:
        """
    	# 根據(jù)snrr范圍對redchi進(jìn)行篩選。
        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])
        # 設(shè)置軸坐標(biāo)值刻度的標(biāo)簽
        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)  # 篩選數(shù)據(jù) (lamost數(shù)據(jù)應(yīng)該在正常值范圍內(nèi),不然因?yàn)閿?shù)值差過大會(huì)導(dǎo)致繪制不出圖像!)
        plt_box_iamge(df_sc)

    Python怎么使用plt.boxplot()函數(shù)繪制箱圖

    3.3 參數(shù)詳解

    plt.boxplot(x,                      # x:指定要繪制箱圖的數(shù)據(jù)
                notch=None,           # notch:是否是凹口的形式展現(xiàn)箱線圖,默認(rèn)非凹口
                sym=None,              # sym:指定異常點(diǎn)的形狀,默認(rèn)為+號顯示
                vert=None,              # vert:是否需要將箱線圖垂直擺放,默認(rèn)垂直擺放
                whis=None,             # whis:指定上下須與上下四分位的距離,默認(rèn)為1.5倍的四分位差
                positions=None,   # positions:指定箱線圖的位置,默認(rèn)為[0,1,2…]
                widths=None,         # widths:指定箱線圖的寬度,默認(rèn)為0.5
                patch_artist=None,        # patch_artist:是否填充箱體的顏色
                meanline=None,             # meanline:是否用線的形式表示均值,默認(rèn)用點(diǎn)來表示
                showmeans=None,       # showmeans:是否顯示均值,默認(rèn)不顯示
                showcaps=None,           # showcaps:是否顯示箱線圖頂端和末端的兩條線,默認(rèn)顯示
                showbox=None,             # showbox:是否顯示箱線圖的箱體,默認(rèn)顯示
                showfliers=None,          # showfliers:是否顯示異常值,默認(rèn)顯示
                boxprops=None,           # boxprops:設(shè)置箱體的屬性,如邊框色,填充色等
                labels=None,                  # labels:為箱線圖添加標(biāo)簽,類似于圖例的作用
                flierprops=None,          # filerprops:設(shè)置異常值的屬性,如異常點(diǎn)的形狀、大小、填充色等
                medianprops=None,   # medianprops:設(shè)置中位數(shù)的屬性,如線的類型、粗細(xì)等
                meanprops=None,       # meanprops:設(shè)置均值的屬性,如點(diǎn)的大小、顏色等
                capprops=None,           # capprops:設(shè)置箱線圖頂端和末端線條的屬性,如顏色、粗細(xì)等
                whiskerprops=None)   # whiskerprops:設(shè)置須的屬性,如顏色、粗細(xì)、線的類型等

    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])                               # 設(shè)置x軸值的范圍  rotation=30
    # ax.set_xticks()  							      # 自定義x軸的值
    ax.set_xlabel("xlabel")                  # 設(shè)置x軸的標(biāo)簽
    ax.set_xticklabels(['A','B','C','D'],  rotation=30,fontsize=10)   # 設(shè)置x軸坐標(biāo)值的標(biāo)簽 旋轉(zhuǎn)角度 字體大小
    ax.set_title("xcy")       					  # 設(shè)置圖像標(biāo)題
    ax.legend(labels= ['A','B','C','D'],loc='best',)  # 增加圖例
    ax.text(x=0.2 , y=3.5 , s="test" ,fontsize=12)   # 增加注
    
    plt.show()

    關(guān)于“Python怎么使用plt.boxplot()函數(shù)繪制箱圖”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI