Matplotlib グリッド間隔の設定

Suraj Joshi 2021年2月9日
Matplotlib グリッド間隔の設定

このチュートリアルでは、Matplotlib のプロットでグリッドの間隔を設定し、メジャーグリッドとマイナーグリッドに異なるスタイルを適用する方法を紹介します。

グリッドを表示するには、matplotlib.pyplot.grid() 関数を使用する必要があります。

import matplotlib.pyplot as plt

plt.figure(figsize=(8, 6))
plt.xlim(0, 10)
plt.ylim(0, 10)
plt.grid()
plt.title("Plot with Grids")
plt.show()

出力:

Matplotlib におけるデフォルトのグリッド

目盛りの間隔に合わせてグリッドを配置したプロットを表示します。目盛りの間隔を変更することでグリッドの間隔を変更することができます。

ティックの間隔を変更して Matplotlib プロットのグリッド間隔を変更する

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(8, 6))

axes[0].set_xlim(0, 10)
axes[0].set_ylim(0, 10)
axes[0].set_title("Subplot 1")
axes[0].grid()

axes[1].set_xlim(0, 8)
axes[1].set_ylim(0, 8)
axes[1].set_title("Subplot 2")
axes[1].grid()

plt.show()

出力:

Matplotlib の目盛りの間隔を変更することで、グリッドの間隔を変更する

2つのサブプロットを持つ図を作成します。両方のサブプロットの目盛りの間隔を変えています。図から、グリッドの間隔が目盛りの間隔に合わせて維持されていることがわかります。

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(8, 6))

major_ticks_top = np.linspace(0, 20, 6)
minor_ticks_top = np.linspace(0, 20, 21)

major_ticks_bottom = np.linspace(0, 15, 6)

axes[0].set_xticks(major_ticks_top)
axes[0].set_yticks(major_ticks_top)
axes[0].set_xticks(minor_ticks_top, minor=True)
axes[0].set_yticks(minor_ticks_top, minor=True)
axes[0].set_title("Subplot 1")
axes[0].grid(which="major", alpha=0.6)
axes[0].grid(which="minor", alpha=0.3)

axes[1].set_xticks(major_ticks_bottom)
axes[1].set_yticks(major_ticks_bottom)
axes[1].set_title("Subplot 2")
axes[1].grid()

plt.tight_layout()
plt.show()

出力:

Matplotlib でのメジャー目盛りとマイナー目盛り

これは、2つのサブプロットを持つ Matplotlib の図を表示します。Subplot 1 は、マイナーグリッドとメジャーグリッドの両方を持っています。マイナーグリッドは 1 単位の間隔で配置され、暗い線で表示されます。同様に、メジャーグリッドは 5 単位の間隔で配置され、明るい線で表されます。

関数 set_yticks()set_xticks() でマイナー目盛りを表すには minor=True を用います。大目盛りに対応するグリッドを選択するには which="major" を、小目盛りに対応するグリッドを選択するには which="major" を用います。

grid() メソッドの alpha パラメータはグリッド線の強度を設定するために用いられます。alpha の値が大きいほど、グリッド線は暗くなります。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn