Seaborn 箱線圖

Manav Narula 2021年10月2日
Seaborn 箱線圖

可以使用 Python 中的 seaborn 模組建立不同的統計圖表。我們可以使用 seaborn.boxplot() 函式建立一個箱線圖。

分析師和統計學家經常使用箱線圖來表示不同級別或類別的資料。箱線圖可以傳達許多統計值。下圖說明了這一點。

箱線圖資訊

boxplot() 函式可以有效地繪製資料集的分類值,也可以處理單個列表或陣列向量。它與小提琴圖非常相似。

在下面的例子中,我們繪製了一個單一分佈的箱線圖,以瞭解最終的數字。

import random
import numpy as np
import seaborn as sns

n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.boxplot(n)

單變數箱線圖

我們還可以在箱線圖上繪製散點圖。它將讓你更好地瞭解繪製的分佈和最終數字。

我們將使用 seaborn.stripplot() 函式來繪製散點圖。例如,

import random
import numpy as np
import seaborn as sns

n = random.sample(range(0, 50), 30)
arr = np.array(n)
sns.boxplot(n)
sns.stripplot(n, color="red")

箱線圖上的帶狀圖

箱線圖可以有效地用於繪製分類變數並使它們的比較變得簡單。在以下程式碼中,我們將繪製多個類別的箱線圖。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
        "Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
        "Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
        "Product": [
            "A",
            "A",
            "A",
            "A",
            "B",
            "B",
            "B",
            "B",
            "A",
            "A",
            "A",
            "A",
            "B",
            "B",
            "B",
            "B",
        ],
    }
)

sns.boxplot(data=df, y="Price", x="Quantity")

分類資料的箱線圖

注意在上面的資料集中,我們可以輕鬆地比較不同數量的價格。我們還可以新增 hue 引數並將其值設定為 Product 變數。這樣,我們將能夠為不同的產品繪製不同的框。

我們可以使用 matplotlib.pyplot.ylim()matplotlib.pyplot.xlim() 來設定圖的 x 和 y 軸的限制。

我們可以使用更多引數來調整最終圖。linewidth 引數可用於增加箱線圖邊界的厚度。我們可以使用 palette 引數為不同類別自定義顏色。可以使用 orient 引數更改方向。還有更多這樣的引數可以使用。

請參考下面的程式碼以瞭解其中一些引數的應用。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(
    {
        "Quantity": [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8],
        "Price": [9, 10, 15, 16, 13, 14, 15, 18, 11, 12, 14, 15, 16, 17, 18, 19],
        "Day": [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2],
        "Product": [
            "A",
            "A",
            "A",
            "A",
            "B",
            "B",
            "B",
            "B",
            "A",
            "A",
            "A",
            "A",
            "B",
            "B",
            "B",
            "B",
        ],
    }
)

sns.boxplot(
    data=df, y="Price", x="Quantity", hue="Product", linewidth=2.5, palette="Set2"
)

帶引數的多列的箱線圖

我們還可以使用 catplot() 函式來建立箱線圖。catplot() 函式非常適合繪製分類值。要使用此函式建立箱線圖,我們需要將 catplot() 函式中的 kind 引數的值指定為 box

作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn