PandasとMatplotlibで複数の線グラフを描画する方法
PandasとMatplotlibを組み合わせると、DataFrameのデータをもとに複数の線グラフを簡単に描画できます。この記事では、3つの異なる数式(y=x^3、y=x^2、y=mx)のデータを1つのグラフに重ねて表示する手順を解説します。
実装の手順
- 図(figure)のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- PandasのDataFrameクラスを使って、「equation」「x」「y」の3列からなる2次元の表形式データを作成します。
- pivot()メソッドを使い、xをインデックス、equationを列、yを値としてデータを再形成します。これにより、各数式ごとに独立した系列として扱えるようになります。
- plot()メソッドを呼び出して線グラフを描画します。pivot後のDataFrameには各数式が列として格納されているため、すべての系列が自動的に同じグラフ上にプロットされます。
- 最後にshow()メソッドで図を画面に表示します。
サンプルコード
import pandas as pd
from matplotlib import pyplot as plt
# 図のサイズとレイアウトの自動調整を設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# 数式名・x・y の3列を持つDataFrameを作成
df = pd.DataFrame([
["y=x^3", 0, 0],
["y=x^3", 1, 1],
["y=x^3", 2, 8],
["y=x^3", 3, 27],
["y=x^3", 4, 64],
["y=x^2", 0, 0],
["y=x^2", 1, 1],
["y=x^2", 2, 4],
["y=x^2", 3, 9],
["y=x^2", 4, 16],
["y=mx", 0, 0],
["y=mx", 1, 1],
["y=mx", 2, 2],
["y=mx", 3, 3],
["y=mx", 4, 3],
], columns=['equation', 'x', 'y'])
# xをインデックス、equationを列、yを値としてピボット
df = df.pivot(index='x', columns='equation', values='y')
# 線グラフを描画して表示
df.plot()
plt.show()コードのポイント
このコードの鍵となるのはpivot()によるデータの再形成です。元のDataFrameは「縦持ち」形式(各行に数式名・x値・y値が並ぶ構造)ですが、pivotによってx値を行インデックス、数式名を列とする「横持ち」形式に変換されます。その結果、df.plot()を呼び出すだけで、Pandasが各列を個別の系列として認識し、凡例付きの複数線グラフを自動的に生成してくれます。
出力結果
実行すると、y=x^3、y=x^2、y=mx の3本の曲線が1つのグラフ上に重ねて表示され、それぞれの増加傾向の違いをひと目で比較できます。
-
Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使
-
PythonとMatplotlibで複数のプロットを1つの図に描画する方法
Matplotlibは、データ可視化のために広く利用されている人気のPythonパッケージです。データの可視化は非常に重要なステップです。生の数値を目で追ったり複雑な計算を実行したりしなくても、データの中で何が起きているのかを直感的に把握できるようになるからです。また、定量的な洞察を聴衆に対して効果的に伝える手段としても役立ちます。Matplotlibは、データをもとに2次元のプロットを作成するために使われます。オブジェクト指向のAPIを備えており、Pythonアプリケーションへプロットを簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyderなどの開