【Python】時系列グラフを折れ線・散布図形式で描画|Matplotlibでの日付データの分析入門

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

サマリー

PythonMatplotlibライブラリを活用し、時間軸を持つ「時系列グラフ」を描画する方法について解説します。

目次

【Python】Matplotlibでの時系列グラフ出力イメージ

本記事では上図に示すように、X軸が時間軸を取る時系列グラフをPythonを用いて描画する方法を解説します。

【Python】グラフ可視化ライブラリのインストール|Matplotlib

Pythonでグラフを描画する際、一般的にMatplotlibまたはSeabornというライブラリを用います。今回はMatplotlibを利用し、時系列グラフを描画します。

Pythonライブラリのインストール

ライブラリのインストールがお済みでない場合は、以下をターミナル・コマンドプロンプト等で実行しておきましょう。

pip install matplotlib

時系列グラフの描画

Matplotlibのmatplotlib.pyplot.plot_date()メソッドを利用し、時系列グラフを描画します。

このメソッドを用いる場合、次のような引数を指定します。

import matplotlib.pyplot as plt

plt.plot_date(X,              # X軸データ
              Y,              # Y軸データ
              fmt='o',        # グラフプロットのフォーマット
              tz=None,        # タイムゾーン(デフォルト:UTC)
              xdate=True,     # Trueの場合:X軸データを日付型データと見なす
              ydate=False,    # Trueの場合:Y軸データを日付型データと見なす
            )

上記の引数にはmatplotlib.pyplot.plot_date()の主要引数のみを抜粋して記述しています。

デザイン性を高めたグラフを出力したい場合は、Matplotlib Line2DにおけるProperty項目を引数として追加すると良いです。

【Python実践】Matplotlibで時系列グラフを描画

Pythonプログラムを記述し、時系列グラフを描画する方法を解説します。

Pythonライブラリ・サンプルデータの準備

はじめに、時系列グラフの描画に用いるPythonライブラリサンプルデータの情報を記述します。

以下を事前に実行しておきましょう。

"""
**********************************************************
Pythonライブラリを準備
**********************************************************
"""
import matplotlib.pyplot as plt
import pandas as pd
from matplotlib import rcParams
rcParams["font.family"] = "sans-serif"
rcParams["font.sans-serif"] = "Hiragino Maru Gothic Pro"

# 時系列データを扱うライブラリ
from datetime import datetime, timedelta
from matplotlib import dates as mpl_dates

# グラフ背景デザイン
plt.style.use("ggplot")

# グラフ出力サイズ調整
plt.rcParams["figure.figsize"] = (8,6)

"""
**********************************************************
サンプルデータを準備
**********************************************************
"""

X = [datetime(2022,7,1),
     datetime(2022,7,2),
     datetime(2022,7,3),
     datetime(2022,7,4),
     datetime(2022,7,5),
     datetime(2022,7,6)]

Y = [100,
     120,
     150,
     190,
     200,
     220]

グラフの描画|時系列散布図(1)

散布図形式の時系列グラフを描画する場合、次のようなコードを実行します。

# グラフ可視化(散布図)
plt.plot_date(X, Y, label='Time Series Graph')

# 書式設定
plt.xlabel("Date")             # X軸ラベル
plt.ylabel("Amount")           # Y軸ラベル
plt.title("Graph Title")       # タイトル
plt.legend(loc="best")         # 凡例
plt.gcf().autofmt_xdate()      # X軸値を45度回転
plt.savefig("date_graph.jpg")  # 画像保存
plt.show()                     # グラフ表示
plt.close()

グラフの描画|時系列散布図(2)

X軸の日付は、お好みの表示形式で出力できます。例えば、上図のような日付フォーマットで出力したい場合、次のようなコードを実行します。

# グラフ可視化(散布図)
plt.plot_date(X, Y, label='Time Series Graph')

# 書式設定
plt.xlabel("Date")                                 # X軸ラベル
plt.ylabel("Amount")                               # Y軸ラベル
plt.title("Graph Title")                           # タイトル
plt.legend(loc="best")                             # 凡例
plt.gcf().autofmt_xdate()                          # X軸値を45度回転
date_format = mpl_dates.DateFormatter("%b,%d,%Y")  # 日付の表示形式設定
plt.gca().xaxis.set_major_formatter(date_format)
plt.savefig("date_graph2.jpg")                     # 画像保存
plt.show()                                         # グラフ表示
plt.close()

グラフの描画|折れ線グラフ

折れ線グラフ形式の時系列グラフを描画する場合、plot_date()linestyleを指定した次のようなコードを実行します。

# グラフ可視化(折れ線グラフ)
plt.plot_date(X, Y, label='Time Series Graph', linestyle='solid')

# 書式設定
plt.legend(loc="best")         # 凡例
plt.gcf().autofmt_xdate()      # X軸値を45度回転
plt.savefig("date_graph3.jpg") # 画像保存
plt.show()                     # グラフ表示
plt.close()

【参考】Pythonでのデータ前処理・分析・可視化

当サイトではPythonを用いた「データ前処理手法」「データ分析」「グラフや表を用いた可視化」手法について幅広く解説しております。AI・機械学習にも応用できる内容となっておりますため、興味がある方は併せてご確認下さい。

Pythonを活用したデータ処理・分析手法一覧



【参考】Pythonとは・できること一覧

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次