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

Matplotlibでタイムゾーンを考慮した時刻データを扱う方法

Matplotlibでタイムゾーン(timezone)を考慮した時刻データをグラフ化するには、Pythonのpytzライブラリを活用するのが便利です。以下の手順に沿って実装方法を解説します。

タイムゾーン対応プロットの手順

  • 図のサイズと余白の設定: figureサイズを指定し、サブプロット間および周囲のパディングを調整します。
  • データフレームの作成: 2次元の表形式データを持つpandasのDataFrameを作成します。インデックスには日時データを使用します。
  • pytzによるタイムゾーン処理: pytzライブラリは、Olson tzデータベースをPythonに取り込むためのライブラリです。これにより、正確かつクロスプラットフォームなタイムゾーン計算が可能になります。
  • プロットの作成: plot()メソッドを使用してデータフレームを描画します。
  • 図の表示: show()メソッドでグラフを画面に表示します。

サンプルコード

以下の例では、「US/Eastern」(アメリカ東部時間)のタイムゾーン情報を持つ日時インデックスを作成し、ランダムな正規分布データをプロットしています。

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import pytz

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

df = pd.DataFrame(
    dict(y=np.random.normal(size=5)),
    index=pd.date_range(
        start='2018-03-11 01:30',
        freq='15min',
        periods=5,
        tz=pytz.timezone('US/Eastern')))
df.plot()

plt.show()

コードのポイント

  • pd.date_range()tz 引数に pytz.timezone('US/Eastern') を渡すことで、タイムゾーン対応(tz-aware)の日時インデックスが生成されます。
  • 開始時刻を「2018-03-11 01:30」に設定している点も重要です。この日はアメリカの夏時間(DST)への切替日であり、タイムゾーンを正しく扱う必要性がよくわかる例となっています。
  • 15分間隔(freq='15min')で5つのデータポイントを生成しています。

出力結果

Matplotlibでタイムゾーンを考慮した時刻データを扱う方法

このように、pytzとpandasを組み合わせることで、タイムゾーン情報を保持したままMatplotlibで時系列データを正確に可視化できます。国際的なデータや夏時間の影響を受ける地域のデータを扱う際には、ぜひこの手法を活用してください。

  1. PythonのMatplotlibで中空(白抜き)の四角形マーカーを描画する方法

    Matplotlibで中空(塗りつぶしなし)の四角形マーカーを描くには、マーカーの種類に ks を指定し、markerfacecolor=none、markersize=15、markeredgecolor=red を設定します。これにより、枠線だけの白抜きスタイルの四角形マーカーが描画されます。 各パラメータの意味 ks:k は黒色(black)、s は四角形(square)を表すマーカースタイルです。 markerfacecolor=none:マーカーの内部を塗りつぶさず、中空にします。 markersize(ms):マーカーのサイズを指定します(ここでは15)。 markeredgec

  2. Matplotlibで漸近線・不連続点を含むグラフを正しく描画する方法

    はじめにMatplotlibで y = 1/x のような関数をそのままプロットすると、x = 0 付近で値が発散し、グラフ上に不自然な縦線が表示されてしまうことがあります。これは数値計算では厳密な「無限大」を扱えず、0に極めて近い大きな値として計算されるためです。本記事では、numpyとMatplotlibを組み合わせて、漸近線(不連続点)を持つ関数を見やすく描画する手順を解説します。処理の手順numpyを使ってx・yのデータポイントを作成します。plt.axis(off) で軸の表示をオフにします。plot() メソッドでx・yのデータをもとに曲線を描画します。axhline() で水平方向