公衆號:尤而小屋
作者: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)]