本記事では、Python / matplotlibでグラフに横線・縦線を入れる方法をご説明します。
Pythonの実行環境
今回は、以下の実行環境でプログラムを実行しています。
・Python 3.7.6
・Jupyterlab 1.2.6
・Pandas:1.1.2
・matplotlib:3.3.2
実例としては、次のような予算管理表を使います。
ファイル名は「テストデータ.xlsx」で、シート名は「予算管理表」です。
■予算管理表
まずは、ライブラリをインポートし、今回扱う予算管理表をdfとして読み込んでおきます。
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
%matplotlib inline
df = pd.read_excel('テストデータ.xlsx', sheet_name = '予算管理表')
Python/matplotlibでグラフに横線を入れる方法
テストデータのような予算管理表を年度毎に合計額を棒グラフにしたとき、金額の平均値や最大値のラインで横線を引きたいってありますね。
この時は、次のように書きます。
#グラフのオブジェクトを定義
fig, ax = plt.subplots(figsize=(8, 4))
year_list = ['2021年度', '2022年度', '2023年度']
#横軸の値
x = year_list
#縦軸の値
y = [df[year].sum() for year in year_list]
#グラフの作成
ax.bar(x, y, color='lightsteelblue', width=.5)
#グラフのタイトル、軸ラベルを設定
ax.set_title('予算の推移')
ax.set_xlabel('年度')
ax.set_ylabel('予算額')
#グラフの座標を設定
ax.grid(axis='x', color='blue', lw=0.5, linestyle='--', alpha = 0.2)
ax.grid(axis='y', color='blue', lw=0.5, linestyle='--', alpha = 0.2)
#横線を引く
ax.axhline(y=10000, xmin=0.05, xmax=0.95,
color='red',
lw=2,
ls='--',
alpha=0.6)
横線は設定は、最後のコードとなります。ax.axhline()で設定しています。
その他のコードは、次の記事で解説しています。
ax.axhline()の引数の設定としては、次の通りとなります。
・y:横線を引くときのy軸の値。
・xmin:横線の左端の位置。グラフの横幅全体を1としたときの比率で設定。
・xmax:横線の右端の位置。設定はxminと同様。
・color、lw、ls、alpha:他の線に関する関数と共通の引数。それぞれ色、線の太さ、線のスタイル、透明度。
結果は、次のようになります。
今回はy軸が10000のところで横線を引いてますが、NumPyのnp.mean( yの値のリスト )やnp.max( yの値のリスト ) を設定して、平均値や最大値で線も引くのに使えます。
コードは特に覚える必要はなく、ぜひぜひコピペで使い回しましょう。
Python/matplotlibでグラフに縦線を入れる方法
縦線は、横線と比べて使う頻度は少ないかもしれませんが、コードの書き方が似ているので、併せてご紹介します。
縦線は、上のコードの横線の部分を次のように書き換えます。
#縦線を引く
ax.axvline(x=1, ymin=0, ymax=0.95,
color='blue',
lw=4,
ls='-',
alpha=0.6)
グラフは次のようになります。
縦線は、ax.axvline()を使います。横線はax.axhline()で似ているので、気をつけましょう!
縦線はvertical(垂直)のvで、横線はhorizon(水平)のhです。
引数の設定の仕方は、基本的に、xとyが入れ替わっただけです。
ただ、x軸は数値ではなく文字列のため、リストのインデックスで縦線の位置を設定することになります。
今回は、x=1なので、x軸のリストのインデックスが1である'2022年度'で縦線が引かれています。
※基本中の基本ですが、リストのインデックスはゼロからカウントします。
こんな感じで、グラフに横線も縦線も簡単に引けますね。
以上、Python / matplotlibでグラフに横線・縦線を入れる方法を説明してきました。
最後まで読んでいただき、ありがとうございました。