Matplotlib での目盛り数の設定

Suraj Joshi 2023年1月30日 2020年12月21日
  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 配列かリストを渡します。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

関連記事 - Matplotlib Ticks