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

PandasとMatplotlibで複数の時系列DataFrameを1つのグラフにまとめて描画する方法


Pandasを使えば、複数の時系列データフレーム(DataFrame)を1つのプロットにまとめて描画できます。本記事では、ルピーとドルという2つの異なるスケールの時系列データを、左右のY軸を使い分けながら1つのグラフ上に表示する具体的手順を、サンプルコードとともに解説します。

実装の流れ

  • 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整する
  • 時系列データを含むPandasデータフレームを作成する
  • プロット用に日付をインデックスとして設定する
  • 「rupees(ルピー)」と「dollar(ドル)」の2つの系列を同じ図上にプロットする
  • show()メソッドを呼び出して図を表示する

サンプルコード

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt, dates

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

df = pd.DataFrame(dict(date=list(pd.date_range("2021-01-01", periods=10)), rupees=np.linspace(1, 10, 10), dollar=np.linspace(10, 20, 10)))

df.set_index(pd.to_datetime(df.date), drop=True).plot()
df = df.set_index(pd.to_datetime(df.date), drop=True)
df.rupees.plot(grid=True, label="rupees", legend=True)
df.dollar.plot(secondary_y=True, label="dollar", legend=True)

plt.show()

コードのポイント

pd.date_range()で2021年1月1日から10日分の日付データを生成し、np.linspace()によってルピー(1〜10)とドル(10〜20)の数値列を作成しています。

set_index(pd.to_datetime(df.date))により、日付列をDatetimeIndexとして設定することで、X軸が自動的に日付として整形されます。

重要なのはsecondary_y=Trueの指定です。これにより「dollar」系列が右側の第2Y軸に割り当てられ、スケールの異なる2つの時系列データを見やすく1つのグラフに重ねて表示できます。grid=Trueでグリッド線を表示し、labellegend=Trueで凡例も自動的に追加されます。

出力結果

PandasとMatplotlibで複数の時系列DataFrameを1つのグラフにまとめて描画する方法


  1. Matplotlibで陰方程式をプロットすることは可能?等高線を使った描画方法

    Matplotlibには、陰方程式(implicit equation)を直接プロットする専用の機能は標準では用意されていません。しかし、等高線プロット(contour)を活用することで、陰方程式のグラフを簡単に描くことができます。この記事では、その具体的な手順とサンプルコードを紹介します。 陰方程式をプロットする手順 NumPyを使ってxrangeとyrangeのデータ点を作成します。 meshgrid()メソッドを使って、座標ベクトルから座標行列を生成します。 xとyから方程式を作成します。 contour()メソッドにx、y、方程式を渡して等高線を作成します。 show()メソッドで図

  2. PythonでPandasのデータフレームを使ってmatplotlib散布図を作成する方法

    散布図は、2つの変数間の関係を視覚的に把握するのに非常に便利なグラフです。Pandasを使えばデータフレームを簡単に作成でき、さらにsubplots()メソッドで図(fig)と軸(ax)の変数を生成できます。その後、ax.scatter()メソッドを呼び出すことで、目的の散布図を描画することが可能です。 手順 生徒数のリストを作成します。 生徒が取得した点数のリストを作成します。 各散布点の色を表現するために、色のリストを用意します。 Pandasを使って、データフレームの軸となるデータをリストとして定義します。 subplots()メソッドでfig変数とax変数を作成します。デフォルトでは