Matplotlib での目盛り数の設定
Suraj Joshi
2023年1月30日
このチュートリアルでは、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.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()
出力:
これは、図の 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()
出力:
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()
メソッドには NumPy 配列かリストを渡します。
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn