Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Pandasの積み上げ面グラフ

公開日 2024-08-18

PandasのSeries, DataFrameで縦向きの積み上げ面グラフをプロットする方法は、以下の2つがあります。

  • plot()メソッドにkind='area'オプションを渡す。

  • plot.area()メソッドを使う(メソッドチェーン)。

両者にほぼ違いはありません。この記事では後者を使用します。

簡単な例

まず、pandas.Seriesで棒グラフをプロットする簡単な例を以下に示します。indexに指定した変数が横軸になります。

import pandas as pd

sr = pd.Series([1, 3, 2], index=["spam", "ham", "egg"])
sr.plot.area()
<Axes: >
<Figure size 640x480 with 1 Axes>

次に、pandas.DataFrameの簡単な例を以下に示します。indexに指定した変数が横軸になり、columnsが異なる色のエリア(系列)になります。

df = pd.DataFrame(
    [[1, 2], [3, 1], [2, 4]],
    index=["spam", "ham", "egg"],
    columns=["Alice", "Bob"]
)

display(df)
df.plot.area()
Loading...
<Axes: >
<Figure size 640x480 with 1 Axes>

plot(), plot.area()の各メソッドのオプションについては、Pandas グラフ作成の共通設定を参照して下さい。

透過させて比較

plot.area()メソッドにstacked=Falseオプションを与えると、積み上げグラフではなく、色を透過させて各系列の値が比較できる通常の面グラフになります。

df.plot.area(stacked=False)
<Axes: >
<Figure size 640x480 with 1 Axes>

色の変更

グラフの色を変更するには、色を辞書形式またはリスト形式でcolorオプションに渡します。オプションで指定できる色の詳細は、以下の記事を参考にして下さい。

Matplotlib 色の書式

df.plot.area(color={"Alice": "brown", "Bob": "pink"})
<Axes: >
<Figure size 640x480 with 1 Axes>

また、色の透過度を変更する場合、alphaオプションに0から1の範囲で値を渡します。 値が小さいほど透明に近づきます。

df.plot.area(alpha=0.3)
<Axes: >
<Figure size 640x480 with 1 Axes>