PythonのMatplotlibで「imshow」を使って2変量分布を表示する方法
はじめに
Matplotlibは、データ可視化のために広く使われている人気のPythonパッケージです。データの可視化は非常に重要なステップです。数値を一つずつ確認したり複雑な計算を実行したりしなくても、データの中で何が起きているのかを直感的に把握できるようになるからです。
可視化によって、定量的な洞察を効果的に伝えることができます。Matplotlibはデータをもとに2次元のプロットを作成するために使用され、オブジェクト指向のAPIを備えているため、Pythonアプリケーションにプロットを簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyder IDEなどとも組み合わせて利用可能です。
MatplotlibはPythonで書かれており、数値計算パッケージであるNumPyを基盤として構築されています。
インストール方法
Windows環境では、以下のコマンドでMatplotlibをインストールできます。
pip install matplotlib
Matplotlibの依存ライブラリは以下の通りです。
Python(バージョン3.4以上) NumPy Setuptools Pyparsing Libpng Pytz FreeType Six Cycler Dateutil
2変量分布とは
2変量分布(bivariate distribution)とは、2つの独立した確率変数が存在するときに、あるイベントが発生する確率を表す分布のことです。
Matplotlibでは、「imshow」関数が主に画像やプロットを表示するために使用されます。ここからは、Matplotlibを使って2変量分布をプロットする具体的な手順を見ていきましょう。
サンプルコード
import numpy as np
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
from matplotlib.path import Path
from matplotlib.patches import PathPatch
np.random.seed(9654241)
delta = 0.025
x = y = np.arange(-4.5, 4.5, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
fig, ax = plt.subplots()
plt.title('A bivariate distribution')
plt.xlabel('x-axis')
plt.ylabel('y-axis')
im = ax.imshow(Z, interpolation='bilinear',
origin='lower', extent=[-3, 3, -3, 3],
vmax=abs(Z).max(), vmin=-abs(Z).max())
plt.show()出力結果

コードの解説
必要なパッケージをインポートし、扱いやすいようにエイリアス(別名)を定義しています。
randomライブラリの「seed」関数を使って、乱数のシード値を設定し再現性のあるデータを生成できるようにしています。
NumPyライブラリを使用して、2つの異なるデータセットを作成しています。
meshgridとexp関数により、ガウス関数に基づく2つの分布Z1・Z2を生成し、その差を2倍したZを計算しています。
subplots関数を使って図(figure)と軸(axes)を作成しています。
xlabel、ylabel、titleの各設定により、X軸・Y軸のラベルとグラフのタイトルを指定しています。
imshow関数でデータを画像として描画します。interpolation='bilinear'で補間を滑らかにし、origin='lower'で原点の位置を指定、extentで座標範囲を、vmax/vminでカラーマップの最大値・最小値を設定しています。
最後にshow関数を呼び出して、グラフを画面に表示します。
-
PythonとMatplotlibで複数のプロットを1つの図に描画する方法
Matplotlibは、データ可視化のために広く利用されている人気のPythonパッケージです。データの可視化は非常に重要なステップです。生の数値を目で追ったり複雑な計算を実行したりしなくても、データの中で何が起きているのかを直感的に把握できるようになるからです。また、定量的な洞察を聴衆に対して効果的に伝える手段としても役立ちます。Matplotlibは、データをもとに2次元のプロットを作成するために使われます。オブジェクト指向のAPIを備えており、Pythonアプリケーションへプロットを簡単に組み込むことができます。IPythonシェル、Jupyter Notebook、Spyderなどの開
-
PythonのMatplotlibでヒストグラムを作成する方法をわかりやすく解説
Matplotlibは、データ可視化のために広く使われている人気のPythonライブラリです。データの可視化は非常に重要なステップです。数値を一つずつ確認したり複雑な計算を行ったりしなくても、データ全体の傾向や特徴を直感的に把握できるようになるからです。また、定量的な洞察を効果的に伝える手段としても優れています。MatplotlibとはMatplotlibは、データをもとに2次元のプロット(グラフ)を作成するためのライブラリです。オブジェクト指向のAPIを備えており、作成したグラフをPythonアプリケーションに組み込むことも簡単に行えます。IPythonシェル、Jupyter Noteboo