日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

箱形图和小提琴图

發布時間:2023/12/19 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 箱形图和小提琴图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

箱形圖(Box-plot)

又稱為盒須圖、盒式圖或箱線圖,是一種用作顯示一組數據分散情況資料的統計圖,因形狀如箱子而得名。它能顯示出一組數據的最大值、最小值、中位數、及上下四分位數。

箱形圖繪制須使用常用的統計量,能提供有關數據位置和分散情況的關鍵信息,尤其在比較不同的母體數據時更可表現其差異。

箱形圖的繪制主要包含六個數據節點,需要先將數據從大到小進行排列,然后分別計算出它的上邊緣,上四分位數,中位數,下四分位數,下邊緣,還有一個異常值。

計算過程:

計算上四分位數(Q3),中位數,下四分位數(Q1)
計算上四分位數和下四分位數之間的差值,即四分位數差(IQR, interquartile range)Q3-Q1
繪制箱線圖的上下范圍,上限為上四分位數,下限為下四分位數。在箱子內部中位數的位置繪制橫線。
大于上四分位數1.5倍四分位數差的值,或者小于下四分位數1.5倍四分位數差的值,劃為異常值(outliers)。
異常值之外,最靠近上邊緣和下邊緣的兩個值處,畫橫線,作為箱線圖的觸須。
極端異常值,即超出四分位數差3倍距離的異常值,用實心點表示;較為溫和的異常值,即處于1.5倍-3倍四分位數差之間的異常值,用空心點表示。
為箱線圖添加名稱,數軸等

分位數

根據其將數列等分的形式不同可以分為中位數,四分位數,十分位數、百分位數等等。四分位數作為分位數的一種形式,在統計中有著十分重要的意義和作用。

四分位數(Quartile)也稱四分位點,是指在統計學中把所有數值由小到大排列并分成四等份,處于三個分割點位置的數值。它是一組數據排序后處于25%和75%位置上的值。四分位數是通過3個點將全部數據等分為4部分,其中每部分包含25%的數據。很顯然,中間的四分位數就是中位數,因此通常所說的四分位數是指處在25%位置上的數值(稱為下四分位數)和處在75%位置上的數值(稱為上四分位數)。與中位數的計算方法類似,根據未分組數據計算四分位數時,首先對數據進行排序,然后確定四分位數所在的位置,該位置上的數值就是四分位數。與中位數不同的是,四分位數位置的確定方法有幾種,每種方法得到的結果會有一定差異,但差異不會很大。

四分位數有三個分位點,第一個四分位數就是通常所說的四分位數,稱為下四分位數,第二個四分位數就是中位數,第三個四分位數稱為上四分位數,分別用Q1、Q2、Q3表示。

第一四分位數 (Q1),又稱“較小四分位數”,等于該樣本中所有數值由小到大排列后第25%的數字。
第二四分位數 (Q2),又稱“中位數”,等于該樣本中所有數值由小到大排列后第50%的數字。
第三四分位數 (Q3),又稱“較大四分位數”,等于該樣本中所有數值由小到大排列后第75%的數字。
第三四分位數與第一四分位數的差距又稱四分位距(InterQuartile Range,IQR)。

確定四分位數的位置的方法有多種,如

Q1位置 = (n+1) * 0.25
Q2位置 = (n+1) * 0.5
Q3位置 = (n+1) * 0.75

其中n表示項數

另一種確定方法

Q1位置 = 1 + (n-1) * 0.25
Q2位置 = 1 + (n-1) * 0.5
Q3位置 = 1 + (n-1) * 0.75

Demo

最簡盒形圖

import matplotlib.pyplot as plt
import numpy as np

all_data = [np.random.normal(0, std, 100) for std in range(1, 4)]

fig = plt.figure(figsize=(8, 6))

plt.boxplot(all_data,
            notch=False,  # box instead of notch shape
            sym='rs',  # red squares for outliers
            vert=True)  # vertical box aligmnent

plt.xticks([y + 1 for y in range(len(all_data))], ['x1', 'x2', 'x3'])
plt.xlabel('measurement x')
t = plt.title('Box plot')
plt.show()

自定義顏色填充盒形圖

import matplotlib.pyplot as plt
import numpy as np

all_data = [np.random.normal(0, std, 100) for std in range(1, 4)]

fig = plt.figure(figsize=(8, 6))

bplot = plt.boxplot(all_data,
                    notch=False,  # notch shape
                    vert=True,  # vertical box aligmnent
                    patch_artist=True)  # fill with color

colors = ['pink', 'lightblue', 'lightgreen']
for patch, color in zip(bplot['boxes'], colors):
    patch.set_facecolor(color)

plt.xticks([y + 1 for y in range(len(all_data))], ['x1', 'x2', 'x3'])
plt.xlabel('measurement x')
t = plt.title('Box plot')
plt.show()

小提琴圖

小提琴圖 (Violin Plot)是用來展示多組數據的分布狀態以及概率密度。這種圖表結合了箱形圖和密度圖的特征,主要用來顯示數據的分布形狀。跟箱形圖類似,但是在密度層面展示更好。在數據量非常大不方便一個一個展示的時候小提琴圖特別適用。

小提琴圖概念圖

Demo

import matplotlib.pyplot as plt
import numpy as np

fig, axes = plt.subplots(figsize=(12, 5))

all_data = [np.random.normal(0, std, 100) for std in range(6, 10)]

axes.violinplot(all_data,
                   showmeans=False,
                   showmedians=True
                   )
axes.set_title('violin plot')

# adding horizontal grid lines

axes.yaxis.grid(True)
axes.set_xticks([y + 1 for y in range(len(all_data))], )
axes.set_xlabel('xlabel')
axes.set_ylabel('ylabel')

plt.setp(axes, xticks=[y + 1 for y in range(len(all_data))],
         xticklabels=['x1', 'x2', 'x3', 'x4'],
         )

plt.show()

參考文獻

百度百科-四分位數
python繪制盒狀圖和小提琴圖
箱形圖繪制-水平,并列等
箱形圖與小提琴圖概念介紹
seaborn小提琴圖

總結

以上是生活随笔為你收集整理的箱形图和小提琴图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。