Matplotlib での目盛り数の設定

Suraj Joshi 2023年1月30日
  1. Matplotlib.ticker.MaxNLocator クラスを用いて目盛り数を設定する
  2. Matplotlib.axis.Axis.set_ticks() メソッドを使って目盛り数を設定する
Matplotlib での目盛り数の設定

このチュートリアルでは、Matplotlib.ticker.MaxNLocator クラスと set_ticks() メソッドを用いて、Matplotlib 図の目盛り数を設定する方法を説明します。

import math
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * math.pi, 100)
y = np.sin(x)

fig, axes = plt.subplots(1, 1)

axes.plot(x, y)
axes.set_title("Sinx Function")
axes.set_xlabel("X")
axes.set_ylabel("sinX")
plt.show()

出力:

Matplotlib におけるデフォルトの目盛り数

これは、デフォルトの目盛り数が設定された Matplotlib の図を示しています。異なるメソッドを使って目盛りの数を変更します。

Matplotlib.ticker.MaxNLocator クラスを用いて目盛り数を設定する

Matplotlib.ticker.MaxNLocator クラスは、ビンの最大数を表す nbins という名前のパラメータを定義します。目盛りの数はビンの数よりも 1つ多くなります。したがって、Matplotlib.ticker.MaxNLocator クラスの nbins パラメータは、目盛りの数が nbins+1 を超えることはできないことを意味します。

import math
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator

x = np.linspace(0, 2 * math.pi, 100)
y = np.sin(x)

fig, axes = plt.subplots(1, 1)

axes.plot(x, y)
axes.yaxis.set_major_locator(MaxNLocator(5))
axes.set_title("Sinx Function")
axes.set_xlabel("X")
axes.set_ylabel("sinX")
plt.show()

出力:

Matplotlib.ticker.MaxNLocator クラスを用いて、プロットの目盛り数を設定する

これは、図の Y 軸の最大ビン数を 5 に設定します。同様に、X 軸にも目盛りを設定できます。

また、if ステートメントで条件を指定して、条件を満たす目盛りのみを選択することもできます。

import math
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * math.pi, 100)
y = np.sin(x)

fig, axes = plt.subplots(1, 1)

axes.plot(x, y)
for i, tick in enumerate(axes.xaxis.get_ticklabels()):
    if i % 2 != 0:
        tick.set_visible(False)
for i, tick in enumerate(axes.yaxis.get_ticklabels()):
    if i % 2 != 0:
        tick.set_visible(False)
axes.set_title("Sinx Function")
axes.set_xlabel("X")
axes.set_ylabel("sinX")
plt.show()

出力:

if 条件を用いてプロットの目盛り数を設定する

X 軸と Y 軸の偶数位置の目盛りのみに目盛りラベルを設定します。目盛りラベルは削除されますが、目盛りは残っています。条件を変更して目盛りラベルをカスタマイズすることができます。

Matplotlib.axis.Axis.set_ticks() メソッドを使って目盛り数を設定する

Python の Matplotlib.axis.Axis.set_ticks() を使って軸を設定することもできます。

import math
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2 * math.pi, 100)
y = np.sin(x)

fig, axes = plt.subplots(1, 1)

axes.plot(x, y)
axes.xaxis.set_ticks([0, 1, 3, 4, 5, 6])
axes.yaxis.set_ticks(np.linspace(-1, 1, 5))
axes.set_title("Sinx Function")
axes.set_xlabel("X")
axes.set_ylabel("sinX")
plt.show()

出力:

set_ticks メソッドを使ってプロットの目盛り数を設定しています

set_ticks() メソッドで指定した目盛り数と目盛り値を設定します。set_ticks() メソッドには NumPy 配列かリストを渡します。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

関連記事 - Matplotlib Ticks