Matplotlib_目盛_間隔

Matplotlibで目盛間隔を自在に設定【簡潔&多彩な実用例】

「Matplotlibの目盛間隔をサクッと調整したい」「複雑な解説よりも、すぐ使える例が欲しい」という方に向けて、シンプルなコード例を集めました。定期的な数値刻みはもちろん、日付軸・対数軸・特定位置だけに目盛を表示するなど、バラエティ豊かなパターンを紹介します。

基本:MultipleLocatorでシンプルに等間隔調整

下記のようにMultipleLocatorを使えば、等間隔な目盛を即設定できます。

import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator

x = [0, 1, 2, 3, 4, 5]
y = [v**2 for v in x]

fig, ax = plt.subplots()
ax.plot(x, y, marker='o')

# X軸を0.5刻みで表示
ax.xaxis.set_major_locator(MultipleLocator(0.5))

# Y軸を1.0刻みで表示
ax.yaxis.set_major_locator(MultipleLocator(1.0))

plt.show()

実行結果:

MultipleLocatorを使って目盛を設定

固定値だけ表示したい場合:FixedLocator

特定の値のみに目盛を振りたい時はFixedLocatorが有効です。

from matplotlib.ticker import FixedLocator

fig, ax = plt.subplots()
ax.plot(x, y, marker='o')

# X軸の目盛を特定位置に固定
ax.xaxis.set_major_locator(FixedLocator([0, 2, 3.5, 5]))

plt.show()

これで指定リストの値にのみ目盛が表示されます。

実行結果:

補助目盛(マイナー目盛)の追加

主要目盛だけでなく、より細かい補助目盛(マイナー目盛)を表示することで、精度の高い読み取りが可能になります。

# 主要目盛は1.0刻み、マイナー目盛は0.2刻み
ax.yaxis.set_major_locator(MultipleLocator(1.0))
ax.yaxis.set_minor_locator(MultipleLocator(0.2))

これで補助的な細かい目盛が追加され、グラフの精緻さが向上します。

実行結果:

matplotlib_メモリの調整

日付軸の目盛調整:AutoDateLocatorなど

日時データを表示する場合は日付専用のLocatorを使います。AutoDateLocatorDateFormatterを組み合わせると、日付ベースの目盛間隔も簡単にコントロールできます。

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime, timedelta

dates = [datetime(2021,1,1) + timedelta(days=i) for i in range(10)]
values = [i for i in range(10)]

fig, ax = plt.subplots()
ax.plot(dates, values, marker='o')

# 日付軸に自動で適切な間隔を設定
ax.xaxis.set_major_locator(mdates.AutoDateLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))

plt.gcf().autofmt_xdate()  # 日付表示を回転調整
plt.show()

自動調整されるので、グラフの拡大・縮小に応じて最適な日付間隔が保たれます。

実行結果:

matplotlib_目盛調整_日付

対数軸や非線形スケールでも調整可能

対数軸を使う場合でも目盛調整が可能です。たとえば、対数軸で主要目盛を特定のパワーごとに表示したい場合はLogLocatorを利用します。

import numpy as np
from matplotlib.ticker import LogLocator

x = np.logspace(0, 3, 100)
y = x**2

fig, ax = plt.subplots()
ax.plot(x, y)

ax.set_xscale('log')  # 対数スケール設定
ax.xaxis.set_major_locator(LogLocator(base=10.0, numticks=5))

plt.show()

これで対数スケールでも見やすい目盛間隔を用意できます。

実行結果:

Matplotlib_目盛調整_対数スケール

まとめ

  • 等間隔表示MultipleLocatorで即設定
  • 特定点表示FixedLocatorで思い通りの位置に
  • マイナー目盛追加:主要目盛+補助目盛で細かく表示
  • 日付軸AutoDateLocatorDateFormatterで柔軟に対応
  • 対数軸LogLocatorを活用

上記例をそのまま活用し、あなたのMatplotlib図表を思い通りの間隔に仕上げてみてください。

上部へスクロール