MatplotlibでPandasデータフレームの時刻をインデックス値としてプロットする方法
MatplotlibでPandasデータフレームの時刻(タイムスタンプ)をインデックス値として扱い、時系列グラフを描くには、set_index()メソッドを使って時刻列をインデックスに設定するのが最も簡単な方法です。以下に具体的な手順とコード例を示します。
実装手順
rcParamsを使って図のサイズを設定し、サブプロット間および周囲の余白(パディング)を自動調整します。time(時刻)とspeed(速度)の2つの列を持つPandasデータフレームを作成します。時刻には
pd.date_range()を使って一定間隔のタイムスタンプを生成します。set_index('time')で既存の「time」列をDataFrameのインデックスに設定し、そのままplot()を呼び出すことで、X軸に時刻が表示された折れ線グラフが描画されます。plt.show()メソッドで図を画面に表示します。
コード例
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np
# 図のサイズを設定
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
# 時刻と速度の2列を持つPandasデータフレームを作成
df = pd.DataFrame(dict(time=list(pd.date_range("2021-01-01 12:00:00", periods=10)), speed=np.linspace(1, 10, 10)))
# 「time」列をインデックスに設定してプロット
df.set_index('time').plot()
# グラフを表示
plt.show()
解説のポイント
pd.date_range("2021-01-01 12:00:00", periods=10)は、指定した開始日時から10個分の連続したタイムスタンプを1時間ごとに自動生成します。これにより、等間隔の時刻データを簡単に用意できます。
また、df.set_index('time')によって時刻列がインデックスに昇格するため、Pandasのplot()メソッドは自動的にそのインデックスをX軸の値として使用します。その結果、X軸には数値ではなく「2021-01-01 12:00:00」のような日時ラベルが表示され、時系列データの可視化に適したグラフになります。
出力結果
上記のコードを実行すると、X軸に時刻、Y軸にspeedの値をとった次のような折れ線グラフが出力されます。

-
Matplotlibでデータフレームから3Dサーフェスプロットを表示する方法
Matplotlibでサーフェスプロット(3Dプロット)を作成する場合、1次元のデータフレームでは描画できません。3D表面を表現するためには、2次元のデータポイント(X・Y・Zの組み合わせ)が必要になります。この記事では、numpyで生成したデータを使って、Matplotlibで3Dサーフェスプロットを表示する基本的な手順を解説します。3Dサーフェスプロットを描画する手順図のサイズとレイアウトを設定する — plt.rcParamsでフィギュアサイズを指定し、サブプロット間および周囲の余白(パディング)を自動調整します。フィギュアを作成する — figure()メソッドを使って新しい図を作成、
-
Matplotlibで3D連続線をプロットする方法
Matplotlibを使って3次元空間に連続的な線(3Dライン)を描画する方法を解説します。基本的な手順は以下の通りです。3Dプロットの手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。NumPyを使用して x と y のデータポイントを作成します。xとyのデータポイントから z のデータポイントを計算して作成します。figure() メソッドを使って、新しい図を作成するか既存の図をアクティブにします。add_subplot() メソッドに3D投影(projection=3d)を指定して、Axesを追加します。plot() メソッドを使って、x、y、zのデータポ