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