Matplotlibで目盛りと目盛りの間にX軸ラベルを中央揃えで配置する方法
Matplotlibでは、補助目盛り(minor tick)を活用することで、主目盛りと主目盛りの間にラベルを中央揃えで表示できます。ここでは、株価の日付データを例に、月ごとのラベルを目盛りの間に配置する手順を解説します。
実装の手順
- サンプルデータ(r)を読み込みます。
- 配列のコピーを作成し、指定した型にキャストします。
- subplots() メソッドを使って、図とサブプロットを作成します。
- 日付データとサンプルデータ r をプロットします。
- set_major_locator() および set_minor_locator() メソッドで、主目盛り・補助目盛りのロケーター(位置)を設定します。
- set_major_formatter() および set_minor_formatter() メソッドで、主目盛り・補助目盛りのフォーマッター(表示形式)を設定します。
- 補助目盛りのラベルを中央揃えに設定します。
- show() メソッドで図を表示します。
コード例
import numpy as np
import matplotlib.cbook as cbook
import matplotlib.dates as dates
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
with cbook.get_sample_data('aapl.npz') as fh:
r = np.load(fh)['price_data'].view(np.recarray)
r = r[-250:]
date = r.date.astype('O')
fig, ax = plt.subplots()
ax.plot(date, r.adj_close)
ax.xaxis.set_major_locator(dates.MonthLocator())
ax.xaxis.set_minor_locator(dates.MonthLocator(bymonthday=15))
ax.xaxis.set_major_formatter(ticker.NullFormatter())
ax.xaxis.set_minor_formatter(dates.DateFormatter('%b'))
for tick in ax.xaxis.get_minor_ticks():
tick.tick1line.set_markersize(0)
tick.tick2line.set_markersize(0)
tick.label1.set_horizontalalignment('center')
imid = len(r) // 2
ax.set_xlabel(str(date[imid].year))
plt.show()ポイント解説
このコードのポイントは以下の通りです。
- MonthLocator(bymonthday=15): 各月の15日に補助目盛りを配置することで、月のほぼ中央にラベルが来るようにしています。
- NullFormatter(): 主目盛りにはラベルを表示しないよう設定し、代わりに補助目盛り側で「%b」(月名の省略形)を表示します。
- tick1line.set_markersize(0): 補助目盛りの目盛り線自体は非表示にし、ラベルだけを見た目上きれいに配置できるようにしています。
- label1.set_horizontalalignment('center'): ラベルを補助目盛りの位置に対して中央揃えにすることで、2つの主目盛りの間に自然な形でラベルが収まります。
出力結果

この手法を使えば、時系列データのグラフにおいて、月名や曜日などのラベルを目盛りの間に美しく配置でき、軸ラベルの視認性が大きく向上します。
-
Matplotlibでサブプロットの目盛りラベルの密度を下げる方法
Matplotlibでグラフを描画する際、目盛りラベルが多すぎると表示が混雑して読みにくくなることがあります。この問題を解決するには、density(密度)変数に小さな値を設定することで、目盛りラベルの密度を下げることができます。手順目盛りの間隔を制御するための変数 density を初期化します。NumPyを使用して x および y のデータポイントを作成します。plot() メソッドを使って x と y のデータポイントをプロットします。xticks() メソッドを使用して、X軸の目盛り位置とラベルを設定します。show() メソッドで図を表示します。コード例import numpy as
-
Matplotlibで凡例のマーカーとラベルの間隔を調整する方法
Matplotlibで凡例(legend)のマーカーとラベルの間隔を調整したい場合は、legend()メソッドのlabelspacing引数を使用します。この引数に数値を指定することで、凡例内の各行(マーカーとラベル)同士の縦方向のスペースを自由に広げたり狭めたりできます。手順Label 1、Label 2、Label 3というラベルを付けて、3本の線をプロットします。凡例のマーカーとラベルの間隔を調整するための変数spaceを定義します。legend()メソッドの引数にlabelspacing=spaceを指定して呼び出します。図を表示するには、plt.show()メソッドを使用します。サン