PythonとMatplotlibで複数のプロットを1つの図に描画する方法
Matplotlibは、データ可視化のために広く利用されている人気のPythonパッケージです。
データの可視化は非常に重要なステップです。生の数値を目で追ったり複雑な計算を実行したりしなくても、データの中で何が起きているのかを直感的に把握できるようになるからです。また、定量的な洞察を聴衆に対して効果的に伝える手段としても役立ちます。
Matplotlibは、データをもとに2次元のプロットを作成するために使われます。オブジェクト指向のAPIを備えており、Pythonアプリケーションへプロットを簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyderなどの開発環境とも相性が良く、幅広い場面で活用されています。
Matplotlib自体はPythonで書かれており、数値計算用ライブラリであるNumPyを基盤として構築されています。
Matplotlibのインストール
Windows環境では、以下のコマンドでインストールできます。
pip install matplotlib
Matplotlibの主な依存パッケージは以下のとおりです。
Python(バージョン3.4以上) NumPy Setuptools Pyparsing Libpng Pytz FreeType Six Cycler Dateutil
複数のプロットが必要になるケース
データ分析を進めていると、2つの異なるデータセットを互いに比較しながら理解したい場面が出てきます。たとえば「減衰しながら振動する信号」と「通常の余弦波」の挙動を並べて確認したい場合などです。こうしたときに、複数のプロットを1つの図にまとめて描画すると、関係性がひと目でわかりやすくなります。
それでは、Matplotlibを使って複数のプロットを描画する具体的な方法を見ていきましょう。
サンプルコード
import numpy as np
import matplotlib.pyplot as plt
x1_val = np.linspace(0.0, 6.0)
x2_val = np.linspace(0.0, 3.0)
y1_val = np.cos(2.3 * np.pi * x1_val) * np.exp(-x1_val)
y2_val = np.cos(2.4 * np.pi * x2_val)
fig, (ax1, ax2) = plt.subplots(2, 1)
fig.suptitle('Two plots')
ax1.plot(x1_val, y1_val, 'o-')
ax1.set_ylabel('Plot 1')
ax2.plot(x2_val, y2_val, '.-')
ax2.set_xlabel('x-axis')
ax2.set_ylabel('Plot 2')
plt.show()実行結果
このコードを実行すると、上下に2つのグラフが配置された1つの図が表示され、それぞれ異なるデータセットの波形を確認できます。
コードの解説
まず必要なパッケージ(numpy と matplotlib.pyplot)をインポートし、扱いやすいようにエイリアス(np、plt)を定義します。
NumPyの
linspace関数を使って、2つの異なるデータセット用のx軸の値を生成します。np.cosやnp.expを組み合わせて、減衰する余弦波と通常の余弦波という2種類のy軸データを作成します。plt.subplots(2, 1)を呼び出すことで、縦に2つ並べたサブプロット(ax1とax2)を持つ図(fig)を一度に作成します。fig.suptitleで図全体のタイトルを設定し、各サブプロットのplot関数でデータを描画します。マーカーと線のスタイル('o-'、'.-')も指定しています。set_xlabelおよびset_ylabel関数を使って、X軸・Y軸それぞれにラベルを付与します。最後に
show関数を呼び出すことで、完成した図が画面上に表示されます。
このように subplots 関数を活用すれば、複数のグラフを整理されたレイアウトで1つの図にまとめることができ、データセット同士の比較や関係性の把握が格段に容易になります。
-
PythonのMatplotlibでヒストグラムを作成する方法をわかりやすく解説
Matplotlibは、データ可視化のために広く使われている人気のPythonライブラリです。データの可視化は非常に重要なステップです。数値を一つずつ確認したり複雑な計算を行ったりしなくても、データ全体の傾向や特徴を直感的に把握できるようになるからです。また、定量的な洞察を効果的に伝える手段としても優れています。MatplotlibとはMatplotlibは、データをもとに2次元のプロット(グラフ)を作成するためのライブラリです。オブジェクト指向のAPIを備えており、作成したグラフをPythonアプリケーションに組み込むことも簡単に行えます。IPythonシェル、Jupyter Noteboo
-
PythonのSeabornでpairplotを使って多変量データを視覚化する方法
Seabornは、データの視覚化を支援するPythonのライブラリです。カスタマイズされたテーマと高水準なインターフェースが備わっており、美しいグラフを少ないコード量で作成できるのが特徴です。実際のデータ分析では、データセットに多数の変数(特徴量)が含まれていることが一般的です。そのような場合、すべての変数同士の関係を1つずつ分析しようとすると、二変量分布のプロットを繰り返すことになり、時間がかかるうえにコードも複雑になってしまいます。pairplot関数とはそこで役立つのが「複数のペアごとの二変量分布」を一度に可視化する手法です。Seabornのpairplot関数を使えば、データフレーム内