Python?Matplotlib繪制箱線圖boxplot()函數(shù)詳解
箱線圖
箱線圖一般用來展現(xiàn)數(shù)據(jù)的分布,如上下四分位值、中位數(shù)等,也可以直觀地展示異常點。Matplotlib提供了boxplot()
函數(shù)繪制箱線圖。
import matplotlib.pyplot as plt _ = plt.boxplot(range(10)) # 10個數(shù),0-9 plt.show()
箱線圖雖然看起來簡單,但包含的數(shù)據(jù)信息非常豐富。在上圖中,橙色的線條表示中位數(shù),中間條形的上下邊界分別對應(yīng)上四分位數(shù)(75%的數(shù)據(jù)都小于該值)與下四位分數(shù)(25%的數(shù)據(jù)小于該值),從條形延伸出兩條線段,兩條線段的終點表示數(shù)據(jù)的最大值和最小值。
import numpy as np print(np.median(np.arange(10))) # 中位數(shù) print(np.percentile(np.arange(10), 25)) # 下4分位數(shù),也叫第1分位數(shù) print(np.percentile(np.arange(10), 75)) # 上4分位數(shù),也叫第3分位數(shù)
4.5 2.25 6.75 Process finished with exit code 0
boxplot()函數(shù)還提供了豐富的自定義選項
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)
● x :繪圖數(shù)據(jù)。
● notch :是否以凹口的形式展現(xiàn)箱線圖,默認非凹口。
● sym:指定異常點的形狀,默認為+號顯示。
● vert :是否需要將箱線圖垂直放,默認垂直放。
● whis :指定上下須與上下四分位的距離,默認為1.5倍的四分位差。
● positions :指定箱線圖位置,默認為[0,1,2.…]。
● widths :指定箱線圖寬度,默認為0.5。
● patch _ artist :是否填充箱體的顏色。
● meanline :是否用線的形式表示均值,默認用點表示。
● showmeans :是否顯示均值,默認不顯示。
● showcaps :是否顯示箱線圖頂端和末端兩條線,默認顯示。
● showbox :是否顯示箱線圖的箱體,默認顯示。
● showfliers :是否顯示異常值,默認顯示。
● boxprops :設(shè)置箱體的屬性,如邊框色、填充色等。
● labels :為箱線圖添加標簽,類似于圖例的作用。
● filerprops :設(shè)置異常值的屬性,如異常點的形狀、大小、填充色等。
● medianprops :設(shè)置中位數(shù)的屬性,如線的類型、粗細等。
● meanprops :設(shè)置均值的屬性,如點的大小、顏色等。
● capprops :設(shè)置箱線圖頂端和末端線條的屬性,如顏色、粗細等。
● whiskerprops :設(shè)置須的屬性,如顏色、粗細、線的類型等。
箱線圖通常用在多組數(shù)據(jù)比較時
下面代碼展示了3組簡單數(shù)據(jù)的箱線圖,添加凹口、均值點、顏色以及每組的標簽。
import matplotlib.pyplot as plt a = plt.boxplot([range(10), range(20), range(30)], patch_artist=True, boxprops={'color': 'blue'}, notch=True, showmeans=True, labels=['A', 'B', 'C']) plt.show()
補充:plt.boxplot()函數(shù)繪制箱圖、常用方法
實戰(zhàn)
def plt_box_iamge(df): ? ? """ ? ? snrr的五個范圍為[5,10)、[10,15)、[15,20)、[20,30)、[30-),按照五個snrr范圍計算對應(yīng)redchi的箱圖 ? ? :param df:包含snrr以及redchi的csv數(shù)據(jù)(dataFrame)。 ? ? :return: ? ? """ ?? ?# 根據(jù)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]) ? ? # 設(shè)置軸坐標值刻度的標簽 ? ? 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),不然因為數(shù)值差過大會導(dǎo)致繪制不出圖像!) ? ? plt_box_iamge(df_sc)
常用方法
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軸的標簽 ax.set_xticklabels(['A','B','C','D'], ?rotation=30,fontsize=10) ? # 設(shè)置x軸坐標值的標簽 旋轉(zhuǎn)角度 字體大小 ax.set_title("xcy") ? ? ? ?? ??? ??? ??? ??? ? ?# 設(shè)置圖像標題 ax.legend(labels= ['A','B','C','D'],loc='best',) ?# 增加圖例 ax.text(x=0.2 , y=3.5 , s="test" ,fontsize=12) ? # 增加注 plt.show()
總結(jié)
到此這篇關(guān)于Python Matplotlib繪制箱線圖boxplot()函數(shù)詳解的文章就介紹到這了,更多相關(guān)Matplotlib箱線圖boxplot()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pytest參數(shù)化parametrize使用代碼實例
這篇文章主要介紹了Pytest參數(shù)化parametrize使用代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02淺談python的dataframe與series的創(chuàng)建方法
今天小編就為大家分享一篇淺談python的dataframe與series的創(chuàng)建方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Python調(diào)用系統(tǒng)底層API播放wav文件的方法
這篇文章主要介紹了Python調(diào)用系統(tǒng)底層API播放wav文件的方法,涉及Python使用pywin32調(diào)用系統(tǒng)底層API讀取與播放wav文件的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08