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

Matplotlibで日時軸上に長方形をプロットする方法を解説

Matplotlibを使用して日時(datetime)軸上に長方形を描画するには、以下の手順に従います。

  • 図のサイズを設定し、サブプロット間および周囲のパディングを調整します。
  • 新しい図を作成するか、既存の図をアクティブにします。
  • add_subplot()メソッドを使って、サブプロット配置の一部として図にAxes(軸オブジェクト)を追加します。
  • 長方形を定義するために、Pythonのdatetimematplotlib.datesを組み合わせて、アンカーとなる基準点を求めます。
  • add_patch()メソッドを使って、軸にPatch(長方形パッチ)を追加します。
  • x軸の主目盛りに対してロケーターとフォーマッターを設定し、日付を見やすい形式で表示できるようにします。
  • x軸とy軸それぞれの表示範囲(スケール)を指定します。
  • show()メソッドを呼び出して、図を画面に表示します。

コード例

from datetime import datetime, timedelta
from matplotlib.patches import Rectangle

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

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

fig = plt.figure()

ax = fig.add_subplot(111)

startTime = datetime.now()
endTime = startTime + timedelta(seconds=1)
start = mdates.date2num(startTime)
end = mdates.date2num(endTime)

width = end - start
rect = Rectangle((start, 0), width, 1, color='red')
ax.add_patch(rect)

locator = mdates.AutoDateLocator(minticks=3)
formatter = mdates.AutoDateFormatter(locator)

ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(formatter)

plt.xlim([start - width, end + width])
plt.ylim([-.5, 1.5])

plt.show()

処理のポイント

このコードでは、まずmdates.date2num()を使ってdatetimeオブジェクトをMatplotlib内部の日時数値に変換しています。これにより、開始時刻と終了時刻から長方形の幅(width)を計算できます。

次に、Rectangle((start, 0), width, 1, color='red')で左下の座標・幅・高さを指定した赤い長方形を作成し、add_patch()で軸に追加します。

さらに、AutoDateLocatorAutoDateFormatterを設定することで、x軸の目盛りが自動的に適切な日時形式で表示されます。最後にxlim()ylim()で表示範囲を調整すれば、長方形が見切れずに収まるグラフになります。

出力結果

Matplotlibで日時軸上に長方形をプロットする方法を解説

上記のコードを実行すると、現在時刻から1秒間の範囲を示す赤い長方形が、日時ラベル付きのx軸上に描画されたグラフが表示されます。

  1. Matplotlibで任意のデータを使って4Dプロットを作成する方法

    Matplotlibでは、x・y・z の3つの座標データに加え、c(色) を第4の次元として割り当てることで、いわゆる「4Dプロット」を実現できます。これは実際には3D散布図にカラーマップを組み合わせたものであり、点の位置が3次元情報を、色がもう1つの変数を表現します。以下の手順に従うことで、標準正規分布に従うランダムなデータポイントを使った4Dプロットを簡単に作成できます。手順figure() メソッドを使用して、新しい図を作成するか、既存の図をアクティブ化します。サブプロット構成の一部として、3D投影(projection=3d)を指定した Axes を追加します。NumPy を使って x

  2. Matplotlibで円の中に長方形をプロットする方法

    Matplotlibを使って円の中に長方形を描画したい場合、patchesモジュールが提供するRectangle()クラスとCircle()クラスを組み合わせることで簡単に実現できます。以下の手順に従ってください。手順figure()メソッドを使用して、新しい図を作成するか、既存の図をアクティブにします。add_subplot()メソッドで現在の図にサブプロット(軸)を追加します。Rectangle()クラスとCircle()クラスを使って、長方形と円のインスタンスを作成します。add_patch()メソッドで作成したパッチを軸に追加します。xlim()およびylim()メソッドを使用して、x