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

Seaborn・Plotlyを使って時系列グラフをプロットする方法を徹底解説

Pythonで時系列データを可視化したい場合、SeabornPlotlyを使うと、少ないコード量で美しい折れ線グラフを簡単に作成できます。この記事では、日時データ(time)と数値データ(speed)を持つ時系列データを例に、両ライブラリでのグラフ描画手順を詳しく解説します。

Seabornで時系列グラフを描く手順

Seabornを使用して時系列グラフをプロットするには、以下の手順に従います。

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
  • 日時系列「time」と変数データ「speed」を格納するPandasのデータフレーム(df)を作成します。
  • データ、「time」、「speed」を指定してSeabornの折れ線グラフ(lineplot)を作成します。
  • 目盛りラベルが重ならないよう、tick_paramsで45度回転させます。
  • show()メソッドを呼び出して図を表示します。

Seabornのコード例

import seaborn as sns
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

df = pd.DataFrame(
   dict(
      time=list(pd.date_range("2021-01-01 12:00:00", periods=10, freq="30min")),
      speed=np.linspace(1, 10, 10)
   )
)

ax = sns.lineplot(x="time", y="speed", data=df)

ax.tick_params(rotation=45)

plt.show()

コードのポイント:

  • pd.date_range()を使うことで、2021年1月1日12:00を起点として30分間隔の日時データを10個自動生成しています。
  • np.linspace(1, 10, 10)により、1から10まで等間隔の速度データを作成しています。
  • sns.lineplot()はMatplotlibを内部で利用しているため、plt.show()でそのまま表示できます。
  • tick_params(rotation=45)で日時ラベルを斜めにすることで、ラベル同士の重なりを防ぎ、見やすいグラフになります。

実行結果

上記のコードを実行すると、横軸に日時(time)、縦軸に速度(speed)を取った時系列の折れ線グラフが表示されます。日時ラベルは45度傾いて表示されるため、長い日付文字列でも読み取りやすくなります。

Seaborn・Plotlyを使って時系列グラフをプロットする方法を徹底解説Seaborn・Plotlyを使って時系列グラフをプロットする方法を徹底解説

Plotlyで時系列グラフを描く場合

Plotlyを使うと、インタラクティブな(ズームやホバー操作が可能な)グラフをさらに簡単に作成できます。同じデータをplotly.expressで描画する例は以下の通りです。

import plotly.express as px
import pandas as pd
import numpy as np

df = pd.DataFrame(
   dict(
      time=list(pd.date_range("2021-01-01 12:00:00", periods=10, freq="30min")),
      speed=np.linspace(1, 10, 10)
   )
)

fig = px.line(df, x="time", y="speed", title="時系列データの折れ線グラフ")
fig.show()

Plotlyでは日時軸のフォーマットが自動的に調整されるため、目盛りの回転などを意識する必要がほとんどありません。Webアプリへの組み込みや、マウス操作によるデータ確認が必要なケースではPlotlyが特に便利です。

まとめ

静的で印刷向きのグラフにはSeaborn(Matplotlibベース)、インタラクティブな操作性が必要な場面にはPlotlyを選ぶのがおすすめです。どちらもPandasのデータフレームを直接渡せるため、時系列データの可視化を短いコードで実現できます。ぜひ実際のデータ分析に活用してみてください。

  1. Pythonで時系列データをプロットする方法をわかりやすく解説

    Pythonのmatplotlibを使えば、時系列データ(日時を軸にしたデータ)を簡単にグラフ化できます。ここでは、datetimeオブジェクトを含むデータを折れ線グラフとして描画する基本的な手順を紹介します。 時系列プロットの基本手順 numpyを使用して、x軸(日時データ)とy軸(数値データ)を作成します。 plot()メソッドを使って、作成したx・yのデータをプロットします。 show()メソッドを実行して、図を画面に表示します。 コード例 以下のサンプルコードでは、2021年1月1日の0時から23時までの24個の日時データを生成し、それに対応するランダムな数値をy軸としてプロットし

  2. Pandasの時系列プロットに垂直線を描画する方法

    Pandasを使ってデータフレームを作成し、Matplotlibのaxvline()メソッドを利用することで、時系列プロット上の任意の位置に垂直線を簡単に追加できます。本記事では、その具体的な手順をサンプルコード付きで解説します。手順Pandasを使用して、日付をインデックスとしたデータフレームを作成します。データフレームを基に、Matplotlibで時系列の折れ線グラフをプロットします。axvline()メソッドを使い、指定した日付の位置に緑色の破線(linestyle=dashed)で垂直線を追加します。同様にaxvline()を使い、別の日付の位置に赤色の破線で垂直線を追加します。plt