Python
 Computer >> コンピューター >  >> プログラミング >> Python

Matplotlibプロットで日時の目盛りラベルの表示頻度を変更する方法

Matplotlibのプロットでは、日時(datetime)軸の目盛りラベルが多すぎて互いに重なってしまうことがよくあります。この問題を解決するには、mdates.MonthLocatorなどのロケーターとDateFormatterフォーマッターを組み合わせて、目盛りの表示間隔と書式を制御します。以下では、Pandasのデータフレームを作成して日付範囲でプロットし、目盛りラベルの頻度を変更する手順を紹介します。

手順

  • 図のサイズを設定し、サブプロット間および周囲のパディングを調整します。
  • 異種混合になりうる表形式データを扱うために、Pandasのデータフレームを使用します。
  • plot()メソッドでデータフレームをプロットします。
  • X軸の主ロケーター(目盛りの位置)を設定します。MonthLocator(interval=1)を指定すると、1か月ごとに目盛りが配置され、表示頻度を抑えられます。
  • X軸の主フォーマッター(目盛りラベルの書式)を設定します。DateFormatter('%d-%m-%Y')により、「日-月-年」の形式でラベルが表示されます。
  • autofmt_xdate()を使用します。日付の目盛りラベルは重なりやすいため、ラベルを回転させて右揃えにすると読みやすくなります。
  • 図を表示するにはshow()メソッドを使用します。

サンプルコード

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

index = pd.date_range(start="2020-07-01", end="2021-01-01", freq="D")
index = [pd.to_datetime(date, format='%Y-%m-%d').date() for date in index]

data = np.random.randint(1, 100, size=len(index))

df = pd.DataFrame(data=data, index=index, columns=['data'])

ax = df.plot()
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))

plt.gcf().autofmt_xdate()

plt.show()

コードのポイント

この例では、2020年7月1日から2021年1月1日までの日次データを持つデータフレームを作成しています。MonthLocator(interval=1)により毎月1回だけ目盛りが表示されるため、184日分のデータでもラベルが混雑しません。intervalの値を大きくすると(例えばinterval=2)、さらに表示頻度を下げることもできます。

出力結果

Matplotlibプロットで日時の目盛りラベルの表示頻度を変更する方法

  1. LaTeXでレンダリングする際にMatplotlibプロットの軸目盛りフォントを変更する方法

    LaTeXを使用してレンダリングする際に、Matplotlibプロットの軸目盛り(ティック)フォントを変更したい場合は、以下の手順に従います。 numpy を使って x と y のデータポイントを作成します。 subplot() メソッドを使って、現在の図にサブプロットを追加します。 set_xticks および set_yticks メソッドを使い、データポイント x と y に基づいてそれぞれ x 軸・y 軸の目盛りを設定します。 plot() メソッドを使い、color=red を指定して x と y をプロットします。 太字のフォントウェイトを設定するには、LaTeX の数式表記を利

  2. MatplotlibでJupyterノートブックのmatshow()のfigsize(図のサイズ)を変更する方法

    Matplotlibのmatshow()メソッドで表示される図のサイズ(figsize)を変更したい場合、figure()メソッドの引数にfigsizeを指定し、matshow()メソッドにはfignumを指定することで実現できます。手順figure()メソッドを使って、新しい図を作成するか、既存の図をアクティブにします。このとき、figsize引数で図のサイズを指定できます。Pandasを使ってデータフレームを作成します。matshow()メソッドを使って、配列を行列として新しい図ウィンドウに表示します。引数fignumには、None、整数、または0を指定できます。Noneの場合:自動的に番