20種方法Seaborn繪製箱型圖

公衆號:尤而小屋
作者:Peter
編輯:Peter

大家好,我是Peter~

本文介紹的是如何使用 seaborn 的 boxplot 方法來繪製箱型圖,先看看部分圖形的繪製效果:

[圖片上傳失敗...(image-ce2350-1649776295600)]

參數

繪製圖形中的主要參數如下:

[圖片上傳失敗...(image-dea971-1649776295601)]

更多資料可參考官網地址:https://seaborn.pydata.org/generated/seaborn.boxplot.html

箱型圖

箱型圖是一種用作顯示一組數據分散情況資料的統計圖,它能夠快速顯示數據中的異常值情況,其形狀像盒子,因而得名,也稱之爲盒須圖、盒式圖、盒裝圖或者箱型圖

1977年,美國著名數學家John W. Tukey首先在他的著作《Exploratory Data Analysis》中介紹了箱形圖。

[圖片上傳失敗...(image-efaead-1649776295601)]

四分位數是箱型圖中最爲重要的概念。Q3和Q1的差距稱爲四分位距(InterQuartile Range, IQR):IQR=Q3-Q1

[圖片上傳失敗...(image-7d8fdc-1649776295601)]

內置數據

Seaborn也有自己內置的數據集:

import seaborn as sns
# style設置
sns.set_theme(style="whitegrid")  

tips

消費數據集tips

[圖片上傳失敗...(image-2d5045-1649776295601)]

iris

知名的鳶尾花數據集

[圖片上傳失敗...(image-5d37c-1649776295601)]

水平箱型圖

In [4]:

# 方式1:指定x爲某個Series型數據

ax = sns.boxplot(x=tips["total_bill"])
# 方式2:傳入x和data參數
ax = sns.boxplot(x="total_bill",
                data=tips)

[圖片上傳失敗...(image-b49157-1649776295601)]

垂直箱型圖

In [6]:

ax = sns.boxplot(y=tips["total_bill"])

# 方式2:傳入y和data參數
# ax = sns.boxplot(y="total_bill", data=tips)

[圖片上傳失敗...(image-4b6be9-1649776295601)]

參數orient

In [7]:

ax = sns.boxplot(x="day",y="total_bill", data=tips)

[圖片上傳失敗...(image-abcb54-1649776295601)]

改變x-y的位置:

ax = sns.boxplot(y="day",x="total_bill", data=tips)

[圖片上傳失敗...(image-5d1161-1649776295601)]

參數order

對指定的參數進行排序

In [11]:

# 默認情況
ax = sns.boxplot(
    x="sex",
    y="tip", 
    data=tips
)

[圖片上傳失敗...(image-7286f1-1649776295601)]

下面的例子中我們引入了參數order,主要是查看x軸中兩個標籤;

In [12]:

ax = sns.boxplot(
    x="sex",
    y="tip", 
    data=tips,
    order=["Female","Male"]  # 引入參數
)

和默認情況下的排序不同,按照指定的順序進行展示:

[圖片上傳失敗...(image-8447a3-1649776295601)]

參數hue使用

參數hue主要是用來進行色條的調節

In [13]:

ax = sns.boxplot(
    x="day",
    y="tip", 
    data=tips,
    hue="sex"  # 引入參數
)

[圖片上傳失敗...(image-361e01-1649776295601)]

參數hue_order

In [14]:

ax = sns.boxplot(
    x="day",
    y="tip", 
    data=tips,
    hue="sex",
    hue_order=["Female","Male"]  # 引入參數
)

[圖片上傳失敗...(image-8b614a-1649776295601)]

參數palette

顏色版的設置使用palette

In [15]:

ax = sns.boxplot(
    x="day",
    y="tip", 
    data=tips,
    hue="sex",
    palette="Set3"  # 顏色版
)

[圖片上傳失敗...(image-f3b7be-1649776295601)]

ax = sns.boxplot(
    x="day",
    y="tip", 
    data=tips,
    hue="sex",
    palette="Set2"  # 顏色版
)

[圖片上傳失敗...(image-fb070b-1649776295601)]

[圖片上傳失敗...(image-f58187-1649776295601)]

[圖片上傳失敗...(image-10da2e-1649776295601)]

大小參數

主要是saturation、width、fliersize、linewidth、whis的設置

In [19]:

# 全部是默認情況
ax = sns.boxplot(x="sex",y="tip", data=tips, hue="day")

[圖片上傳失敗...(image-8dd956-1649776295601)]

ax = sns.boxplot(
    x="sex",
    y="tip", 
    data=tips,
    hue="day",
    width=0.7,
    linewidth=3,
)

[圖片上傳失敗...(image-3d33a7-1649776295601)]

ax = sns.boxplot(
    x="sex",
    y="tip", 
    data=tips,
    hue="day",
    width=0.7,
    linewidth=3,
    whis=3  # 引入whis
)

[圖片上傳失敗...(image-64cbb-1649776295601)]

參數notch

自定義缺口

In [22]:

ax = sns.boxplot(
    x="day", 
     y="total_bill", 
     hue="sex",
     data=tips,
    notch=True   # 加入參數
)

[圖片上傳失敗...(image-e768b1-1649776295601)]

參數dodge

必須和hue一起使用,控制同一個分組下面的箱型圖是分開繪製還是重疊在一起

In [23]:

ax = sns.boxplot(
    x="day", 
  y="total_bill", 
  hue="sex",
  data=tips, 
  dodge=False)

[圖片上傳失敗...(image-43fe91-1649776295601)]

ax = sns.boxplot(
    x="day", 
    y="total_bill",
    hue="sex",
    data=tips, 
    dodge=True)

[圖片上傳失敗...(image-a07b12-1649776295601)]

catplot-分類圖

箱型圖和分類圖的結合使用

In [26]:

ax = sns.catplot(
    x="sex", 
    y="total_bill",
    hue="smoker", 
    col="time",
    data=tips, 
    kind="box",  # 箱型圖
    height=4, 
    aspect=.7)

[圖片上傳失敗...(image-8b17b2-1649776295601)]

ax = sns.catplot(
    x="total_bill",
    y="sex",            
    hue="smoker", 
    col="time",
    data=tips, 
    orient="h",  # 水平方向
    kind="box",  # 箱型圖
    height=4, 
    aspect=.7,
    palette="Set2"
)

[圖片上傳失敗...(image-407a70-1649776295601)]

ax = sns.catplot(
    x="sex", 
    y="total_bill",
    hue="smoker", 
    col="time",
    data=tips, 
    kind="violin",  # 小提琴圖
    height=4, 
    aspect=.7)

[圖片上傳失敗...(image-d895c4-1649776295601)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章