今回はグラブの目盛りを変更する方法を紹介します。
目盛りとは
グラフにおける目盛りは、データの数値や範囲を表す役割があります。
データの可視化には欠かせません。
目盛りをさまざまな観点から変更する方法を紹介していきます。

目盛りの位置を変更する方法
Matplotlibで目盛りの位置を変更するには、set_xticksあるいはset_yticksを使用します。
リストで目盛りの位置を手動で指定します。
サンプルコードは以下の通りです。
左側がデフォルト目盛り、右側がset_xticks, set_yticksを使用し、位置を変更した目盛りです。
import matplotlib.pyplot as plt
# サンプルデータ
x = [1, 2, 3, 4, 5]
y = [10, 20, 30, 40, 50]
fig, axs = plt.subplots(1, 2, figsize=(9.6, 4.5)) # 1行2列のサブプロットを作成
# データをプロット
axs[0].plot(x, y)
axs[0].set_title("Default")
axs[1].plot(x, y)
axs[1].set_title("Customized")
# x軸の目盛りの位置を設定
axs[1].set_xticks([1, 3, 5]) # 目盛りの位置を指定
# y軸の目盛りの位置を設定
axs[1].set_yticks([0, 10, 20, 30, 40, 50]) # 目盛りの位置を指定
plt.show()実行結果

x軸は1, 3, 5を、y軸は0, 10, 20, 30, 40, 50 を目盛りに指定しています。
目盛りのラベルを変更する方法
目盛りのラベルを変更することもできます。
Matplotlibで目盛りのラベルを変更するには、
set_xticks, set_yticksとset_xticklabels, set_yticklabelsを合わせて使用します。
set_xticks, set_yticksで目盛りの位置を指定し、
その位置のラベルをset_xticklabels, set_yticklabelsで変更します。
サンプルコードは以下の通りです。
左側がデフォルト目盛り、右側がset_xticks, set_yticksと
set_xticklabels, set_yticklabelsを使用し、位置を変更した目盛りです。
import matplotlib.pyplot as plt
# サンプルデータ
x = [1, 2, 3, 4, 5]
y = [10, 20, 30, 40, 50]
fig, axs = plt.subplots(1, 2, figsize=(9.6, 4.5)) # 1行2列のサブプロットを作成
# データをプロット
axs[0].plot(x, y)
axs[0].set_title("Default")
axs[1].plot(x, y)
axs[1].set_title("Customized")
# x軸の目盛りのラベルを設定
axs[1].set_xticks([1, 2, 3, 4, 5]) # 目盛りの位置を指定
axs[1].set_xticklabels(['apple', 'banana', 'cherry', 'lemon', 'kiwi']) # 目盛りのラベルを指定
plt.show()実行結果

今回の例ではフルーツの名前にラベルを変更してみました!
目盛り間隔を自動で変更する方法
これまでは目盛りを手動で変更する方法を紹介してきましたが、
目盛りの間隔を自動で変更することもできます。
Matplotlibで目盛りの間隔を自動で変更するには、
tickerモジュールのMultipleLocatorクラスとset_major_locatorメソッドを使用します。
set_major_locatorメソッドは、主目盛りの位置を指定するオブジェクトを入れて使用します。
そのオブジェクトを指定した値を倍数で返すMultipleLocatorクラスで取得しています。
詳細はmatplotlibの公式サイトをご確認ください
サンプルコードは以下の通りです。
左側がデフォルト目盛り、
右側がMultipleLocatorクラスとset_major_locatorメソッドを使用し、
位置を変更した目盛りです。
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
# サンプルデータ
x = [1, 2, 3, 4, 5]
y = [10, 20, 30, 40, 50]
fig, axs = plt.subplots(1, 2, figsize=(9.6, 4.5)) # 1行2列のサブプロットを作成
# データをプロット
axs[0].plot(x, y)
axs[0].set_title("Default")
axs[1].plot(x, y)
axs[1].set_title("Customized")
# x軸の目盛りの間隔を設定
axs[1].xaxis.set_major_locator(MultipleLocator(2)) # 2の間隔で目盛りを設定
# y軸の目盛りの間隔を設定
axs[1].yaxis.set_major_locator(MultipleLocator(3)) # 3の間隔で目盛りを設定
plt.show()実行結果

x軸を2の間隔、y軸を3の間隔で目盛りを表示しています。
目盛りのスタイルを変更する方法
目盛りのスタイルを変更する方法を紹介します。
目盛りのスタイルを変更するには、tick_paramsメソッドを使用します。
tick_paramsメソッドで目盛りのラベルや線のスタイルを変更します。
サンプルコードは以下の通りです。
左側がデフォルト目盛り、
右側がtick_paramsメソッド使用し、スタイルを変更した目盛りです。
tick_paramsメソッドで指定しているパラメータの説明は以下です。
axis : 変更したい目盛りの軸
which : 主目盛り(major)、副目盛り(minor)または両方(both)を選択。
labelsize : フォントサイズ
width: 目盛りのポイント幅
labelcolor : ラベルの色
import matplotlib.pyplot as plt
# サンプルデータ
x = [1, 2, 3, 4, 5]
y = [10, 20, 30, 40, 50]
fig, axs = plt.subplots(1, 2, figsize=(9.6, 4.5)) # 1行2列のサブプロットを作成
# データをプロット
axs[0].plot(x, y)
axs[0].set_title("Default")
axs[1].plot(x, y)
axs[1].set_title("Customized")
# x軸の目盛りのフォントのスタイルを変更
axs[1].tick_params(axis='x', which='major', labelsize=15, width=3, labelcolor='blue')
plt.show()実行結果

x軸の目盛りに対し、labelsizeが15で、labelcolorをblueにしています。
目盛りを非表示にする方法
目盛りを非表示にすることもできます。
目盛りを非表示にするには、目盛りのスタイルを変更する方法と同様に
tick_paramsメソッドを使用します。
サンプルコードは以下の通りです。
左側がデフォルト目盛り、
右側がtick_paramsメソッド使用し、目盛りを非表示にしています。
top, bottom, left, right : 目盛りを表示するか非表示にするか
labelleft: ラベルを表示するか非表示にするか
import matplotlib.pyplot as plt
# サンプルデータ
x = [1, 2, 3, 4, 5]
y = [10, 20, 30, 40, 50]
fig, axs = plt.subplots(1, 2, figsize=(9.6, 4.5)) # 1行2列のサブプロットを作成
# データをプロット
axs[0].plot(x, y)
axs[0].set_title("Default")
axs[1].plot(x, y)
axs[1].set_title("Customized")
# x軸の目盛りを非表示
axs[1].tick_params(axis='x', which='both', bottom=False, top=False, labelbottom=False)
# y軸の目盛りを非表示
axs[1].tick_params(axis='y', which='both', left=False, right=False, labelleft=False)
plt.show()実行結果

目盛りを非表示にすることで、シンプルな外観を実現できます。
まとめ
今回は目盛りを変更する方法から非表示にする方法までを紹介しました。
目盛りを変更することで、相手に伝えたいメッセージをより明確にすることができます。
そして、相手にも伝わりやすくなります。
ぜひ、目盛りを自由に変更できるようになり、よりよいグラフを作成してください!
ここまで読んでくださりありがとうございます。
参考
おすすめ教材
米国データサイエンティストがやさしく教えるデータサイエンスのためのPython講座他のUdemyの講座が気になる方はこちら


