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

次に、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: >

plot()
, plot.bar()
, plot.barh()
の各メソッドのオプションについては、Pandas グラフ作成の共通設定を参照して下さい。
積み上げ棒グラフ#
積み上げ棒グラフとする場合、stacked=True
オプションを渡します。
df.plot.bar(stacked=True)
<Axes: >

棒の太さ・色を変更する#
棒の太さはwidth
オプションで指定できます。1
が最大(隙間なし)、0
が最小となります。また、色はcolor
オプションで指定できます。
df.plot.bar(width=0.5, color={"Alice": "green", "Bob": "black"})
<Axes: >

color
オプションで指定できる色の詳細は、以下の記事を参考にして下さい。
棒に枠線を付ける#
棒に枠線を付ける場合、枠線の色をedgecolor
, 枠線の太さをlinewidth
で指定します。
df.plot.bar(edgecolor="black", linewidth=5)
<Axes: >

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