こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
PythonのMatplotlibライブラリを活用し、時間軸を持つ「時系列グラフ」を描画する方法について解説します。
【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とは・できること一覧
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら