Pandasの棒グラフ#

※記事内に商品プロモーションを含むことがあります。

公開日

参考

Pandasを使わずMatplotlib単体で棒グラフを出力する場合、Matplotlibの棒グラフを参照ください。

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

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

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

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

なお、横向きの棒グラフをプロットする場合、以下2つの方法があります(横棒グラフの項を参照)。

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

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

簡単な例#

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

import pandas as pd

sr = pd.Series([1, 3, 2], index=["spam", "ham", "egg"])
sr.plot.bar()
<Axes: >
../_images/d39a312d10b868adba6a713fcfcabeece6a705cf90c4bbdb0d81d40967e3d3ad.png

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

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

display(df)
df.plot.bar()
Alice Bob
spam 1 2
ham 3 5
egg 2 4
<Axes: >
../_images/09886959dd06c8f9aee78716bd7db8827df2bf8fac242a423622dba06ae8b29d.png

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

積み上げ棒グラフ#

積み上げ棒グラフとする場合、stacked=Trueオプションを渡します。

df.plot.bar(stacked=True)
<Axes: >
../_images/e5c16f58d062c6c94074083e8339e20ddba055eec0884c2c08eea1e61771937d.png

棒の太さ・色を変更する#

棒の太さはwidthオプションで指定できます。1が最大(隙間なし)、0が最小となります。また、色はcolorオプションで指定できます。

df.plot.bar(width=0.5, color={"Alice": "green", "Bob": "black"})
<Axes: >
../_images/a88b37ed4e1d83166dc0a4091c6d19e39f038707638d3087873b87db5130c190.png

colorオプションで指定できる色の詳細は、以下の記事を参考にして下さい。

Matplotlib 色の書式

棒に枠線を付ける#

棒に枠線を付ける場合、枠線の色をedgecolor, 枠線の太さをlinewidthで指定します。

df.plot.bar(edgecolor="black", linewidth=5)
<Axes: >
../_images/723547500b24605e019e7de775a44c7ca0fb0aa92017c2b91487ebb38826ebfc.png

横棒グラフ#

横棒グラフを出力するには、plot(kind='barh')メソッドまたはplot.barh()メソッドを使用します。

df.plot.barh()
<Axes: >
../_images/f8282bca02b065a9a1352be7b2d80ac008203035fa52ebb1fd4358bc53895ac1.png