👏

matplotlib で指定範囲に背景色を付ける

2022/10/09に公開

matplotlib で指定範囲に背景色を付ける

出力サンプル

事前準備

pip install pandas numpy matplotlib

コード

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

fig, ax = plt.subplots(figsize=(8, 4))

x    = np.arange(100)
y    = np.arange(100,200)
sample_df = pd.DataFrame( {'x' : x, 'y' : y })
ax.plot(sample_df["x"], sample_df["y"])
ax.text(0, 150, "0-10", rotation='vertical')

# x = 10 ~ 20 の範囲を塗りつぶす
ax.axvspan(10, 20, color="gray", alpha=0.2, label="10-20")

# (10, 150) の位置に縦方向に "10-20" というテキストを表示する
ax.text(10, 150, "10-20", rotation='vertical')

# x = 30 ~ 40 の範囲を塗りつぶす
ax.axvspan(30, 40, color="gray", alpha=0.3)

# (30, 150) の位置に縦方向に "30-40" というテキストを表示する
ax.text(30, 150, "30-40", rotation='vertical')

# x = 50 ~ 60 の範囲を塗りつぶす
ax.axvspan(50, 60, color="gray", alpha=0.4)

# (50, 150) の位置に縦方向に "50-60" というテキストを表示する
ax.text(50, 150, "50-60", rotation='vertical')

# x = 70 ~ 80 の範囲を塗りつぶす
ax.axvspan(70, 80, color="gray", alpha=0.5)

# (70, 150) の位置に縦方向に "70-80" というテキストを表示する
ax.text(70, 150, "70-80", rotation='vertical')

# y = 120 ~ 130 の範囲を塗りつぶす
ax.axhspan(120, 130, color="green", alpha=0.7, label="120-130")

# (0, 125) の位置に縦方向に "120-130" というテキストを表示する
ax.text(0, 125, "120-130")

ax.grid()
labels = ax.get_xticklabels()

# rotation=90 で x 軸の目盛りを回転して表示する
plt.setp(labels, rotation=90, fontsize=12);
ax.set_title("test")
plt.show()

Discussion