【はじめに】
今回は、Matplotlibのmatplotlib.pyplot.bar
メソッドの引数を一覧にしました。
また、実際に引数を使用して基本的な棒グラフの作成方法も紹介します。
データ可視化に興味がある方は、matplotlibを使いこなすための第一歩として参考になると思います。
本記事の内容
- matplotlob.pyplot.barの引数一覧
- 基本的な棒グラフを作成する
- エラーバー(誤差範囲)を表示する
- 積み上げ棒グラフを作成する
【matplotlob.pyplot.barの引数一覧】
matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
引数 | 指定する値 |
---|---|
x(必須) | 各棒の X 軸上の数値(X軸に指定するデータ) |
height (必須) | 各棒の高さ(Y軸に指定するデータ) |
width | 棒の太さ (デフォルト値: 0.8) |
bottom | 各棒の下側の余白(主に積み上げ棒グラフを出力するために使います) |
color | 棒の色 |
edgecolor | 棒の枠線の色 |
linewidth | 棒の枠線の太さ |
tick_label | X 軸のラベル |
xerr | X 軸方向のエラーバー (誤差範囲) を出力する場合、数値または配列を指定 |
yerr | Y 軸方向のエラーバー (誤差範囲) を出力する場合、数値または配列を指定 |
ecolor | エラーバーの色を値または配列で指定 |
capsize | エラーバーの傘のサイズを指定 |
align | 棒の位置。’edge’ (垂直方向の場合:左端, 水平方向の場合:下端) または ‘center’ (中央)を指定。 (デフォルト値: ‘edge’ ) |
log | True に設定すると、対数目盛で出力 (デフォルト値: False) |
label | 凡例に表示させる名前を指定 |
【基本的な棒グラフを作成する】
今回、「1920年から2015年までの全国の人口推移のデータ」を使用してグラフを作成してみます。
私のGitHubに「data.csv」としてアップロードしてあるので、下記コマンドでダウンロードすれば簡単に準備できます。
$ curl https://raw.githubusercontent.com/nakachan-ing/python-references/master/Pandas/data.csv -O
import pandas as pd
df = pd.read_csv('data.csv', encoding='shift-jis')
df.head()
都道府県コード | 都道府県名 | 元号 | 和暦(年) | 西暦(年) | 人口(総数) | 人口(男) | 人口(女) | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 北海道 | 大正 | 9 | 1920 | 2359183 | 1244322 | 1114861 |
1 | 2 | 青森県 | 大正 | 9 | 1920 | 756454 | 381293 | 375161 |
2 | 3 | 岩手県 | 大正 | 9 | 1920 | 845540 | 421069 | 424471 |
3 | 4 | 宮城県 | 大正 | 9 | 1920 | 961768 | 485309 | 476459 |
4 | 5 | 秋田県 | 大正 | 9 | 1920 | 898537 | 453682 | 444855 |
必須の引数のみでグラフを作成 | x, height
大正9年(1920年)の各都道府県の人口(総数)を棒グラフで比較してみます。
# 大正9年(1920年)の各都道府県の人口(総数)をdfとする
df = df[df['西暦(年)']==1920.0]
print(f'要素数:{len(df_1)}')
df.head()
要素数:47
都道府県コード | 都道府県名 | 元号 | 和暦(年) | 西暦(年) | 人口(総数) | 人口(男) | 人口(女) | |
---|---|---|---|---|---|---|---|---|
0 | 1 | 北海道 | 大正 | 9 | 1920 | 2359183 | 1244322 | 1114861 |
1 | 2 | 青森県 | 大正 | 9 | 1920 | 756454 | 381293 | 375161 |
2 | 3 | 岩手県 | 大正 | 9 | 1920 | 845540 | 421069 | 424471 |
3 | 4 | 宮城県 | 大正 | 9 | 1920 | 961768 | 485309 | 476459 |
4 | 5 | 秋田県 | 大正 | 9 | 1920 | 898537 | 453682 | 444855 |
import matplotlib.pyplot as plt
import japanize_matplotlib
%matplotlib inline
# xに「都道府県」、height(Y軸)に「人口(総数)」を指定する
x = df['都道府県名']
y = df['人口(総数)']
# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(16,10))
# X軸のラベルを縦にします。
plt.xticks(rotation=90)
plt.bar(x, y)
棒の幅を「1.0」にしてグラフを作成 | width
# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(16,10))
# X軸のラベルを縦にします。
plt.xticks(rotation=90)
plt.bar(x, y, width=1.0)
ポイント
width
に1.0を指定すると棒と棒の隙間が表示されなくなります。
棒の色を赤色、枠線を非表示にしてグラフを作成 | color, linewidth
# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(16,10))
# X軸のラベルを縦にします。
plt.xticks(rotation=90)
plt.bar(x, y, color='red', linewidth=0)
ポイント
color
はカラーコードで指定することもできます。linewidth
を0にすることで、グラフの枠線を非表示にすることが出来ます。
棒の色、枠線の色、太さを指定してグラフを作成 | color, edgecolor, linewidth
# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(16,10))
# X軸のラベルを縦にします。
plt.xticks(rotation=90)
plt.bar(x, y, color='#FF5B70', edgecolor='#CC4959', linewidth=4)
タイトル、X 軸、Y 軸のラベルを指定してグラフを作成
# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(16,10))
# X軸のラベルを縦にします。
plt.xticks(rotation=90)
plt.title('大正9年(1920年)の各都道府県の人口(総数)比較')
plt.xlabel('都道府県名')
plt.ylabel('人口(総数)')
plt.bar(x, y)
【エラーバー(誤差範囲)を表示する】
エラーバー(誤差範囲)とは一般に データのばらつき spread を示します。
また、不確かさの標準偏差、標準誤差、あるいは任意の信頼区間を表します。
Y軸のエラーバーを一律1000000にして黒色で表示する | yerr, evolor
# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(16,10))
# X軸のラベルを縦にします。
plt.xticks(rotation=90)
plt.title('大正9年(1920年)の各都道府県の人口(総数)比較')
plt.xlabel('都道府県名')
plt.ylabel('人口(総数)')
plt.bar(x, y, yerr=100000, ecolor="red")
Y軸のエラーバーの傘のサイズを「5」にして表示する | yerr, capsize
# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(16,10))
# X軸のラベルを縦にします。
plt.xticks(rotation=90)
plt.title('大正9年(1920年)の各都道府県の人口(総数)比較')
plt.xlabel('都道府県名')
plt.ylabel('人口(総数)')
plt.bar(x, y, yerr=100000, ecolor="red", capsize=5)
【積み上げ棒グラフを作成する】
大正9年(1920年)の各都道府県の人口(男)と人口(女)を積み上げ棒グラフで表示してみます。
# 大正9年(1920年)の各都道府県の人口(男)をdf_maleとする
df_male = df['人口(男)']
# 大正9年(1920年)の各都道府県の人口(女)をdf_femaleとする
df_female = df['人口(女)']
積み上げ棒グラフを作成する | bottom
# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(16,10))
# X軸のラベルを縦にします。
plt.xticks(rotation=90)
plt.title('大正9年(1920年)の各都道府県の積み上げグラフ')
plt.xlabel('都道府県名')
plt.ylabel('人口')
plt.bar(x, df_male, color='green')
plt.bar(x, df_female, bottom=df_male, color='orange')
積み上げ棒グラフに凡例を表示して作成する
# グラフの大きさをplt.figureで指定しておきます。
plt.figure(figsize=(16,10))
# X軸のラベルを縦にします。
plt.xticks(rotation=90)
plt.title('大正9年(1920年)の各都道府県の積み上げグラフ')
plt.xlabel('都道府県名')
plt.ylabel('人口')
plt.bar(x, df_male, color='green', label='人口(男)')
plt.bar(x, df_female, bottom=df_male, color='orange', label='人口(女)')
plt.legend()
【さいごに】
今回は、Matplotlibのmatplotlib.pyplot.bar
メソッドの引数を紹介しました。
ひとつのメソッドだけでこんなにもあるのかと思ってしまいますが、それだけMatplotlibが充実しているライブラリだということが分かりますね。
今後、他のメソッドについても紹介していきますので焦らずに着実に習得していきましょう。
また、使用したCSVファイルやJupyter NotebookはGitHubに公開しています。
Jupyter Notebookは下記コマンドでダウンロードできるので、自由に使って是非練習してみてください。
$ curl https://raw.githubusercontent.com/nakachan-ing/python-references/master/Matplotlib%26Seaborn/matplotlib.pyplot.barの引数.ipynb -O
python-references/Matplotlib&Seaborn at master · nakachan-ing/python-references
Contribute to nakachan-ing/python-references development by creating an account on GitHub.
matplotlib.pyplot.bar — Matplotlib 3.9.0 documentation
コメント