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つのデータポイントを生成しています。
出力結果

このように、pytzとpandasを組み合わせることで、タイムゾーン情報を保持したままMatplotlibで時系列データを正確に可視化できます。国際的なデータや夏時間の影響を受ける地域のデータを扱う際には、ぜひこの手法を活用してください。
-
PythonのMatplotlibで中空(白抜き)の四角形マーカーを描画する方法
Matplotlibで中空(塗りつぶしなし)の四角形マーカーを描くには、マーカーの種類に ks を指定し、markerfacecolor=none、markersize=15、markeredgecolor=red を設定します。これにより、枠線だけの白抜きスタイルの四角形マーカーが描画されます。 各パラメータの意味 ks:k は黒色(black)、s は四角形(square)を表すマーカースタイルです。 markerfacecolor=none:マーカーの内部を塗りつぶさず、中空にします。 markersize(ms):マーカーのサイズを指定します(ここでは15)。 markeredgec
-
Matplotlibで漸近線・不連続点を含むグラフを正しく描画する方法
はじめにMatplotlibで y = 1/x のような関数をそのままプロットすると、x = 0 付近で値が発散し、グラフ上に不自然な縦線が表示されてしまうことがあります。これは数値計算では厳密な「無限大」を扱えず、0に極めて近い大きな値として計算されるためです。本記事では、numpyとMatplotlibを組み合わせて、漸近線(不連続点)を持つ関数を見やすく描画する手順を解説します。処理の手順numpyを使ってx・yのデータポイントを作成します。plt.axis(off) で軸の表示をオフにします。plot() メソッドでx・yのデータをもとに曲線を描画します。axhline() で水平方向