【matplotlib】グラフの色々な位置にアノテーションをつける
MAX
MAX999blog
matplotlibで作成したグラフのタイトルの位置を上下左右に調整する。
左右どちらかに寄せたり、スペースの都合などの場合によってはグラフ内にタイトルを表示したい時などに位置を変更できると便利。
seabornからtipsを読み込む。
1import numpy as np
2import pandas as pd
3
4import matplotlib.pyplot as plt
5import japanize_matplotlib
6import seaborn as sns
7
8%matplotlib inline
9
10df_tips = sns.load_dataset("tips")
plt.title()
にlocを指定することで左右の位置を指定できる。
指定可能な値は「center」「left」「right」の3種類。デフォルトは「center」
1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_tips, x="sex", y="total_bill", hue="smoker")
5# 凡例の設定
6plt.legend()
7# グラフタイトル設定
8plt.title(f"title", loc="center")
9plt.tight_layout()
10plt.show()
1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_tips, x="sex", y="total_bill", hue="smoker")
5# 凡例の設定
6plt.legend()
7# グラフタイトル設定
8plt.title(f"title", loc="left")
9plt.tight_layout()
10plt.show()
1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_tips, x="sex", y="total_bill", hue="smoker")
5# 凡例の設定
6plt.legend()
7# グラフタイトル設定
8plt.title(f"title", loc="right")
9plt.tight_layout()
10plt.show()
plt.title()にyの値を指定することでタイトルの上下位置を調整できる。
0がグラフの下側の軸の上、1がグラフの上側の軸の上となっており、floatで指定できる。
指定しない場合はy=1の位置に来るようになる。
y=0.9あたりで、グラフ内の上端付近にタイトルが表示される。
1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_tips, x="sex", y="total_bill", hue="smoker")
5# 凡例の設定
6plt.legend()
7# グラフタイトル設定
8# y: 0がグラフ下端、1がグラフ上端
9plt.title(f"title", y=0.9)
10plt.tight_layout()
11plt.show()
スペースを節約したい時には使うかもしれない。
y=0にすることで、グラフ下端の上にタイトルを表示できる。
1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_tips, x="sex", y="total_bill", hue="smoker")
5# 凡例の設定
6plt.legend()
7# グラフタイトル設定
8# y: 0がグラフ下端、1がグラフ上端
9plt.title(f"title", y=0)
10plt.tight_layout()
11plt.show()
あまりないかと思うが、スペースを節約したくて、グラフ表示がグラフの上の方に集中している散布図などでは使うかもしれない。
yを0以下にするとグラフ枠の下にタイトルが表示される。
x軸の目盛りやラベルの長さによるが、y=-0.2〜0.5ぐらいに設定すると、x軸ラベルのちょうど下あたりにタイトルが表示される。
1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_tips, x="sex", y="total_bill", hue="smoker")
5# 凡例の設定
6plt.legend()
7# グラフタイトル設定
8# y: 0がグラフ下端、1がグラフ上端
9plt.title(f"title", y=-0.25)
10plt.tight_layout()
11plt.show()
グラフ下なので、出典などを表記するのに使えるかもしれない。
yを1より大きくすると、グラフよりも上の方にタイトルを表示できる。
1# グラフのサイズ、背景色設定
2plt.figure(figsize=(6, 4), facecolor="w")
3# 棒グラフ作成
4sns.barplot(data=df_tips, x="sex", y="total_bill", hue="smoker")
5# 凡例の設定
6plt.legend()
7# グラフタイトル設定
8# y: 0がグラフ下端、1がグラフ上端
9plt.title(f"title", y=1.5)
10plt.tight_layout()
11plt.show()
一応、こういうことはできるが、使うことはほとんどないと思う。
タイトルの水平位置はlocで「left」「center」「right」を設定できる。
タイトルの垂直位置はyで数値で設定できる。
1# グラフタイトルの位置設定
2# 左
3plt.title(f"title", loc="left")
4
5# 中央
6plt.title(f"title", loc="center")
7
8# 右
9plt.title(f"title", loc="right")
10
11# グラフ枠内上端付近
12plt.title(f"title", y=0.9)
13
14# グラフ下端の上
15plt.title(f"title", y=0)
16
17# x軸ラベルの下付近
18plt.title(f"title", y=-0.25)