はじめに
Matplotlib は、Python で静的、アニメーション、インタラクティブなビジュアライゼーションを作成できる Python ライブラリです。科学計算、データ分析、機械学習などの分野で広く使用されています。この実験では、Matplotlib を使って画像をプロットする方法と、軸とカラーバーの位置を操作する方法を学びます。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
ライブラリのインポート
このステップでは、この実験で使用する必要なライブラリをインポートします。サンプル画像を取得するために、matplotlib から matplotlib.pyplot と cbook を使用します。
import matplotlib.pyplot as plt
from matplotlib import cbook
デモ画像を取得する
このステップでは、デモ画像とその範囲を取得する関数を定義します。サンプル画像を取得するために、cbook から get_sample_data() 関数を使用します。
def get_demo_image():
z = cbook.get_sample_data("axes_grid/bivariate_normal.npy") ## 15x15 array
return z, (-3, 4, -4, 3)
シンプルな画像とカラーバー
このステップでは、シンプルな画像とそのカラーバーを作成します。画像を作成するために pyplot から imshow() 関数を、カラーバーを作成するために colorbar() 関数を使用します。
def demo_simple_image(ax):
Z, extent = get_demo_image()
im = ax.imshow(Z, extent=extent)
cb = plt.colorbar(im)
cb.ax.yaxis.set_tick_params(labelright=False)
描画時の位置指定による画像とカラーバー - 難しい方法
このステップでは、描画時の位置指定により画像とそのカラーバーを作成します。これは難しい方法で行います。mpl_toolkits.axes_grid1 から SubplotDivider を使用して、軸とカラーバー用の分割器を作成します。
def demo_locatable_axes_hard(fig):
from mpl_toolkits.axes_grid1 import Size, SubplotDivider
divider = SubplotDivider(fig, 2, 2, 2, aspect=True)
## 画像用の軸
ax = fig.add_subplot(axes_locator=divider.new_locator(nx=0, ny=0))
## カラーバー用の軸
ax_cb = fig.add_subplot(axes_locator=divider.new_locator(nx=2, ny=0))
divider.set_horizontal([
Size.AxesX(ax), ## メイン軸
Size.Fixed(0.05), ## パディング,0.1 インチ
Size.Fixed(0.2), ## カラーバー, 0.3 インチ
])
divider.set_vertical([Size.AxesY(ax)])
Z, extent = get_demo_image()
im = ax.imshow(Z, extent=extent)
plt.colorbar(im, cax=ax_cb)
ax_cb.yaxis.set_tick_params(labelright=False)
描画時の位置指定による画像とカラーバー - 簡単な方法
このステップでは、描画時の位置指定により画像とそのカラーバーを簡単な方法で作成します。mpl_toolkits.axes_grid1 から make_axes_locatable を使用して、軸とカラーバー用の分割器を作成します。
def demo_locatable_axes_easy(ax):
from mpl_toolkits.axes_grid1 import make_axes_locatable
divider = make_axes_locatable(ax)
ax_cb = divider.append_axes("right", size="5%", pad=0.05)
fig = ax.get_figure()
fig.add_axes(ax_cb)
Z, extent = get_demo_image()
im = ax.imshow(Z, extent=extent)
plt.colorbar(im, cax=ax_cb)
ax_cb.yaxis.tick_right()
ax_cb.yaxis.set_tick_params(labelright=False)
固定パディング付きで横並びの 2 つの画像
このステップでは、固定パディング付きで横並びの 2 つの画像を作成します。mpl_toolkits.axes_grid1 から make_axes_locatable を使用して、軸とカラーバー用の分割器を作成します。
def demo_images_side_by_side(ax):
from mpl_toolkits.axes_grid1 import make_axes_locatable
divider = make_axes_locatable(ax)
Z, extent = get_demo_image()
ax2 = divider.append_axes("right", size="100%", pad=0.05)
fig1 = ax.get_figure()
fig1.add_axes(ax2)
ax.imshow(Z, extent=extent)
ax2.imshow(Z, extent=extent)
ax2.yaxis.set_tick_params(labelleft=False)
プロット
このステップでは、図を作成し、作成したい各画像用のサブプロットを追加します。
def demo():
fig = plt.figure(figsize=(6, 6))
## プロット 1
## シンプルな画像とカラーバー
ax = fig.add_subplot(2, 2, 1)
demo_simple_image(ax)
## プロット 2
## 描画時の位置指定による画像とカラーバー -- 難しい方法
demo_locatable_axes_hard(fig)
## プロット 3
## 描画時の位置指定による画像とカラーバー -- 簡単な方法
ax = fig.add_subplot(2, 2, 3)
demo_locatable_axes_easy(ax)
## プロット 4
## 固定パディング付きで横並びの 2 つの画像。
ax = fig.add_subplot(2, 2, 4)
demo_images_side_by_side(ax)
plt.show()
まとめ
この実験では、Matplotlib を使って画像をプロットする方法と、軸とカラーバーの位置を操作する方法を学びました。画像とカラーバーを作成するさまざまな方法と、それらを図に配置する方法についても説明しました。この実験で得た知識を使えば、より複雑なビジュアライゼーションを作成し、自分のニーズに合わせて操作することができます。