Seaborn 棒グラフと積み上げ棒グラフ

Manav Narula 2021年11月20日
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 で積み上げ棒グラフを作成する方法を学習します。

積み上げ棒グラフについて話すとき、私たちが意味するのは、同じグラフ上に表された 2つ以上の観測値のセットがあるということです。これにより、グラフ全体が積み重ねられた外観になり、1 セットの観測値が 2 番目のセットの上に配置されます。

このような積み上げ棒グラフを直接作成できる関数はありませんが、従来の seaborn.barplot() メソッドを使用して、2つの個別の棒グラフをプロットし、両方を重ねて配置することができます。

このロジックを次のコードで実装します。

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

上のグラフでは、異なる日の 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 パラメーターを使用して、同じグラフ上に異なる棒を作成するように、さまざまなカテゴリの観測値をグループ化します。このように、最終的な出力は非常にクリーンになり、すべてが 1つの関数のみを使用して実行されます。

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