Pandasの積み上げ面グラフ#
公開日
参考
Pandasを使わずMatplotlib単体で積み上げ面グラフを出力する場合、Matplotlibの積み上げ面グラフを参照ください。
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: >
次に、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()
Alice | Bob | |
---|---|---|
spam | 1 | 2 |
ham | 3 | 1 |
egg | 2 | 4 |
<Axes: >
plot()
, plot.area()
の各メソッドのオプションについては、Pandas グラフ作成の共通設定を参照して下さい。
透過させて比較#
plot.area()
メソッドにstacked=False
オプションを与えると、積み上げグラフではなく、色を透過させて各系列の値が比較できる通常の面グラフになります。
df.plot.area(stacked=False)
<Axes: >
色の変更#
グラフの色を変更するには、色を辞書形式またはリスト形式でcolor
オプションに渡します。オプションで指定できる色の詳細は、以下の記事を参考にして下さい。
df.plot.area(color={"Alice": "brown", "Bob": "pink"})
<Axes: >
また、色の透過度を変更する場合、alpha
オプションに0から1の範囲で値を渡します。
値が小さいほど透明に近づきます。
df.plot.area(alpha=0.3)
<Axes: >