Pandasで複数のグラフを扱う!グラフを並べる方法、重ねる方法

はじめに

PandasはPythonのデータ分析ライブラリであり、データの操作や可視化に優れた機能を提供しています。グラフの描画もPandasを使用することで簡単に行うことができます。この記事では、Pandasを使って複数のグラフを扱い、グラフを並べたり重ねたりする方法について解説します。

基本的なグラフの描画:plot()メソッド

PandasのDataFrameやSeriesオブジェクトは、plot()メソッドを使用して簡単にグラフを描画することができます。plot()メソッドを呼び出すだけで、データの特徴を可視化することができます。

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib

plt.rcParams['font.family'] = 'IPAexGothic'

# サンプルデータの作成
data = {'年度': [2017, 2018, 2019, 2020],
        '売上': [100, 150, 200, 180]}
df = pd.DataFrame(data)
# 折れ線グラフの描画
df.plot(x='年度', y='売上', kind='line')
# グラフの表示
plt.show()

上記のコードでは、年度ごとの売上データを持つDataFrameを作成し、plot()メソッドを使用して折れ線グラフを描画しています。x軸には’年度’列のデータを、y軸には’売上’列のデータを指定しています。

複数グラフの描画:subplot()を用いた手法

複数のグラフを一つの図に表示するには、subplot()メソッドを使用します。subplot()メソッドを使うと、複数のサブプロット(グラフ)を配置することができます。

# サンプルデータの作成
data = {'年度': [2017, 2018, 2019, 2020],
        '売上1': [100, 150, 200, 180],
        '売上2': [120, 160, 190, 210]}
df = pd.DataFrame(data)
# サブプロットを作成し、2つのグラフを描画
fig, axes = plt.subplots(nrows=2, ncols=1
, figsize=(8, 6))
# グラフ1の描画
df.plot(ax=axes[0], x='年度', y='売上1', kind='line')
axes[0].set_title('売上1')
# グラフ2の描画
df.plot(ax=axes[1], x='年度', y='売上2', kind='line')
axes[1].set_title('売上2')
# グラフの表示
plt.tight_layout()
plt.show()

上記のコードでは、subplot()メソッドを使用して2つのサブプロットを作成し、各サブプロットに折れ線グラフを描画しています。axパラメーターを使用して、各サブプロットに対してデータを指定しています。また、set_title()メソッドを使用して各サブプロットのタイトルを設定しています。

グラフの重ねがき:同じaxにplotする方法

複数のグラフを重ねて表示するには、同じaxオブジェクトに対してplot()メソッドを複数回呼び出します。

# サンプルデータの作成
data = {'年度': [2017, 2018, 2019, 2020],
        '売上1': [100, 150, 200, 180],
        '売上2': [120, 160, 190, 210]}
df = pd.DataFrame(data)
# グラフの描画
ax = df.plot(x='年度', y='売上1', kind='line', label='売上1')
df.plot(x='年度', y='売上2', kind='line', label='売上2', ax=ax)
# グラフの表示
plt.legend()
plt.show()

上記のコードでは、plot()メソッドを2回呼び出して同じaxオブジェクトに対してグラフを描画しています。各plot()メソッドでlabelパラメーターを使用して凡例のラベルを指定し、plt.legend()を呼び出して凡例を表示しています。

グラフの配置調整:tight_layout()を用いた手法

複数のグラフを並べる際に、グラフ同士が重ならないように配置調整する方法として、tight_layout()メソッドを使用します。

# サンプルデータの作成
data = {'年度': [2017, 2018, 2019, 2020],
        '売上1': [100, 150, 200, 180],
        '売上2': [120, 160, 190, 210]}
df = pd.DataFrame(data)
# グラフの描画
fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(8, 6))
# グラフ1の描画
df.plot(ax=axes[0], x='年度', y='売上1', kind='line')
axes[0].set_title('売上1')
# グラフ2の描画
df.plot(ax=axes[1], x='年度', y='売上2', kind='line')
axes[1].set_title('売上2')
# グラフの配置調整
plt.tight_layout()
# グラフの表示
plt.show()

上記のコードでは、tight_layout()メソッドを呼び出してグラフの配置を調整しています。これにより、グラフ同士が重ならずに適切に配置されます。

グラフスタイルのカスタマイズ:styleパラメーターの利用

Pandasのplot()メソッドでは、styleパラメーターを使用してグラフのスタイルをカスタマイズすることができます。styleパラメーターにはMatplotlibのスタイル文字列を指定します。

# サンプルデータの作成
data = {'年度': [2017, 2018, 2019, 2020],
        '売上1': [100, 150, 200, 180],
        '売上2': [120, 160, 190, 210]}
df = pd.DataFrame(data)
# グラフの描画(スタイルのカスタマイズ)
df.plot(x='年度', y='売上1', kind='line', style='r--', label='売上1')
df.plot(x='年度', y='売上2', kind='line', style='g-', label='売上2')
# グラフの表示
plt.legend()
plt.show()

上記のコードでは、styleパラメーターを使用してグラフのスタイルをカスタマイズしています。例として、’r–‘は赤色の破線、’g-‘は緑色の実線を表します。それぞれの折れ線グラフに対して異なるスタイルを指定することができます。

まとめ

本記事では、Pandasのデータを使って複数のグラフを表示する方法を紹介しました。

matplotlibを組み合わせることで、2つのグラフを並べて表示したり、1つの領域に複数のグラフを表示したりすることが出来ます。

複数のグラフを表示させてデータを可視化してみましょう!