Seaborn 条形图和堆叠条形图

Manav Narula 2021年10月2日
Seaborn 条形图和堆叠条形图

条形图用于以矩形条表示观测值。Python 中的 seaborn 模块使用 seaborn.barplot() 函数创建条形图。

请参考下面的代码,为商品在不同日期的价格创建一个简单的条形图。

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

df = pd.DataFrame(
    {"Price 1": [7, 1, 5, 6, 3, 10, 5, 8], "Day": [1, 2, 3, 4, 5, 6, 7, 8]}
)

s1 = sns.barplot(x="Day", y="Price 1", data=df, color="red")

Seaborn 堆叠式条形图 1

在本教程中,我们将学习如何在 Seaborn 中创建堆叠的条形图。

当我们谈论堆叠的条形图时,我们的意思是在同一张图中表示两组或更多组观察值。这使整个图形具有堆叠的外观,并且在第二组上放置了一组观察值。

我们没有可以直接创建这种堆叠条形图的函数,但是我们可以使用传统的 seaborn.barplot() 方法绘制两个单独的条形图,并将它们放置在彼此的顶部。

我们在以下代码中实现此逻辑。

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

df = pd.DataFrame(
    {
        "Price 1": [7, 1, 5, 6, 3, 10, 5, 8],
        "Price 2": [1, 2, 8, 4, 3, 9, 5, 2],
        "Day": [1, 2, 3, 4, 5, 6, 7, 8],
    }
)

s1 = sns.barplot(x="Day", y="Price 1", data=df, color="red")

s2 = sns.barplot(x="Day", y="Price 2", data=df, color="blue")

Seaborn 堆叠式条形图 2

在上图中,我们在条形图上绘制了两种商品在不同日期的价格。

如果需要,我们可以在同一条形图上表示一组分类值的观察值。最终结果将不是堆叠外观,而是代表同一条图上多个条上的观测值。

请参考以下代码。

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

df = pd.DataFrame(
    {
        "Price": [7, 1, 5, 6, 3, 10, 5, 8],
        "Product": ["C1", "C2", "C1", "C2", "C1", "C2", "C1", "C2"],
        "Day": [1, 1, 2, 2, 3, 3, 4, 4],
    }
)

s = sns.barplot(x="Day", y="Price", data=df, hue="Product")

Seaborn 堆叠式条形图 3

我们能够在同一张图上绘制 4 个不同日期的 2 种产品的价格。我们给 x 和 y 轴提供条形图的期望值,并使用 hue 参数对不同类别的观察进行分组,以便在同一图形上创建不同的条形。这样,最终输出将更加整洁,并且仅使用一个函数即可完成所有操作。

作者: 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