中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Python中Matplotlib如何繪制箱線圖

發布時間:2021-09-15 12:53:48 來源:億速云 閱讀:292 作者:小新 欄目:開發技術

這篇文章主要介紹了Python中Matplotlib如何繪制箱線圖,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

箱線圖介紹

箱線圖(Box-plot)又稱為盒式圖或箱型圖,是一種用來顯示一組數據分散情況的統計圖,它能顯示一組數據的上界、下界、中位數、上下四分位數以及異常值等。箱線圖的各部分組成及其含義如下圖所示。

Python中Matplotlib如何繪制箱線圖

 關鍵術語說明 四分位數:

  • 四分位數:就是把一組數據按照從小到大的順序進行排列,然后分成四等份,處于三個分割點位置的數字就是四分位數;

  • 第一四分位數(q1):又稱“較小四分位數”或“下四分位數”,等于該樣本中所有數值由小到大排列后第25%的數字,q1的位置 = 1+(n-1)x 0.25;

  • 第二四分位數(q2):又稱“中位數”,等于該樣本中所有數值由小到大排列后第50%的數字,q2的位置= 1+(n-1)x 0.5;

  • 第三四分位數(q3),又稱“較大四分位數”或“上四分位數”,等于該樣本中所有數值由小到大排列后第75%的數字。q3的位置= 1+(n-1)x 0.75;

  • 四分位間距(InterQuartile Range,IQR):第三四分位數與第一四分位數的差距(q3數據- q1數據);

  • Whiske上限(大于該值即為異常值):q3數 + 1.5*IQR,(1.5表示超過的比例,是一個系數,可根據實際情況調整);

  • Whisker下限(小于該值即為異常值):q1數 - 1.5*IQR。


首先對這組數據進行排序得到:[12, 30, 36, 40, 45, 50, 80],數組長度n為7;

q1的位置 = 1+(n-1)x 0.25=1 + 6*0.25 =2.5,所以q1的值為:30 + (36 - 30)*0.5 = 33

q2的位置 = 1+(n-1)x 0.5=1 + 6*0.5 =4,所以q2的值為40

q3的位置 = 1+(n-1)x 0.75=1 + 6*0.75 =5.5,所以q3的值為:45 + (50 - 45)*0.5=47.5

例2:一組數據[12, 45, 30, 80, 36, 50, 40, 43],分別求出q1、q2、q3

首先對這組數據進行排序得到:[12, 30, 36, 40, 43, 45, 50, 80],數組長度n為8;

q1的位置 = 1+(n-1)x 0.25=1 + 7*0.25 =2.75,所以q1的值為:30 + (36 - 30)*0.75 = 34.5

q2的位置 = 1+(n-1)x 0.5=1 + 7*0.5 =4.5,所以q2的值為40 + (43-40)*0.5=41.5

q3的位置 = 1+(n-1)x 0.75=1 + 7*0.75 =6.25,所以q3的值為:45 + (50 - 45)*0.25=46.25

在numpy中提供了quantile()函數,可以直接獲取四分位數,例如np.quantile(x, 0.25)即可獲取數組x中的q1值

Matplotlib中繪制箱線圖的方法:boxplot

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):

關鍵參數含義說明如下:

  • x:指定要繪制箱線圖的數據,可以是一組數據也可以是多組數據;

  • notch:是否以凹口的形式展現箱線圖,默認非凹口;

  • sym:指定異常點的形狀,默認為藍色的+號顯示;

  • vert:是否需要將箱線圖垂直擺放,默認垂直擺放;

  • whis:指定上下須與上下四分位的距離,默認為1.5倍的四分位差;

  • positions:指定箱線圖的位置,默認為range(1, N+1),N為箱線圖的數量;

  • widths:指定箱線圖的寬度,默認為0.5;

  • patch_artist:是否填充箱體的顏色,默認為False;

  • meanline:是否用線的形式表示均值,默認用點來表示;

  • showmeans:是否顯示均值,默認不顯示;

  • showcaps:是否顯示箱線圖頂端和末端的兩條線,默認顯示;

  • showbox:是否顯示箱線圖的箱體,默認顯示;

  • showfliers:是否顯示異常值,默認顯示;

  • boxprops:設置箱體的屬性,如邊框色,填充色等;

  • labels:為箱線圖添加標簽,類似于圖例的作用;

  • filerprops:設置異常值的屬性,如異常點的形狀、大小、填充色等;

  • medianprops:設置中位數的屬性,如線的類型、粗細等;

  • meanprops:設置均值的屬性,如點的大小、顏色等;

  • capprops:設置箱線圖頂端和末端線條的屬性,如顏色、粗細等;

  • whiskerprops:設置須的屬性,如顏色、粗細、線的類型等;

  • manage_ticks:是否自適應標簽位置,默認為True;

  • autorange:是否自動調整范圍,默認為False;

程序舉例

(1)繪制單個箱線圖

import matplotlib.pyplot as plt
import numpy as np
x = np.array([12, 45, 30, 70, 36, 50, 40, 26, 38])
print(sorted(x))
a = np.quantile(x, 0.75)  # 上四分之一數
b = np.quantile(x, 0.25)  # 下四分之一數
print("平均數:", np.mean(x))  # 打印均值
print("中位數:", np.median(x))  # 打印中位數
print("上四分之一數:", a)  # 打印上四分之一數
print("下四分之一數:", b)  # 打印下四分之一數
up = a + 1.5 * (a - b)  # 異常值判斷標準
down = b - 1.5 * (a - b)  # 異常值判斷標準
x = np.sort(x)  # 對原始數據排序
shangjie = x[x < up][-1]  # 除了異常值外的最大值
xiajie = x[x > down][0]  # 除了異常值外的最小值
print("上界:", shangjie)  # 打印上界
print("up:", up)
print("down:", down)
print("下界:", xiajie)  # 打印下界
plt.grid(True)  # 顯示網格
y = plt.boxplot(x, meanline=True, showmeans=True,
                flierprops={"marker": "o", "markerfacecolor": "red", "markersize": 15})  # 繪制箱形圖,設置異常點大小、樣式等
plt.show()  # 顯示圖

程序執行效果圖:

Python中Matplotlib如何繪制箱線圖

 控制臺輸出結果為:

[12, 26, 30, 36, 38, 40, 45, 50, 70]
平均數: 38.55555555555556
中位數: 38.0
上四分之一數: 45.0
下四分之一數: 30.0
上界: 50
up: 67.5
down: 7.5
下界: 12

(2)繪制多個箱線圖

import matplotlib.pyplot as plt
import numpy as np
x = np.random.randint(10, 100, size=(5, 9))  # 隨機生成5行9列 [10, 100]之間的數
print(x)  # 打印數據
plt.grid(True)  # 顯示網格
plt.boxplot(x, labels=list("ABCDEFGHI"), sym="r+", showmeans=True)  # 繪制箱線圖
plt.show()  # 顯示圖片

程序執行效果圖:

Python中Matplotlib如何繪制箱線圖

 注:圖中紅色+號表示異常點,綠色三角形表示平均數。

控制臺輸出的打印結果為:

 更多Python[[90 99 35 32 21 31 83 71 39]
 [24 95 63 50 92 41 89 16 79]
 [73 73 53 21 39 60 50 55 43]
 [64 94 66 26 20 73 40 68 45]
 [74 72 33 81 73 59 85 23 17]]

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Python中Matplotlib如何繪制箱線圖”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

密云县| 贺州市| 岑巩县| 阿城市| 卢湾区| 南丹县| 凤冈县| 镇巴县| 天津市| 沁源县| 云龙县| 长白| 苏州市| 卢龙县| 新宁县| 山东省| 利辛县| 天水市| 轮台县| 瑞昌市| 滨州市| 麻江县| 兰溪市| 信宜市| 顺平县| 隆回县| 江永县| 额尔古纳市| 新安县| 汾西县| 岢岚县| 高阳县| 明水县| 宁远县| 泸州市| 城市| 黎平县| 宁波市| 海林市| 义乌市| 乌海市|