Seaborn 条形图和堆叠条形图

Manav Narula 2021年10月2日 2021年4月29日
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 参数对不同类别的观察进行分组,以便在同一图形上创建不同的条形。这样,最终输出将更加整洁,并且仅使用一个函数即可完成所有操作。

Author: 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