Matplotlibによる画像グリッドとカラーバー

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Matplotlibを使ってカラーバー付きの画像グリッドを作成する方法について説明します。提供されたサンプルコードでは、画像グリッドの各行または各列に共通のカラーバーを使用する方法を示しています。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習しましょう。

時々、Jupyter Notebookが読み込み完了するまで数秒待つ必要がある場合があります。Jupyter Notebookの制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。私たちは迅速に問題を解決いたします。

ライブラリのインポート

まず、カラーバー付きの画像グリッドを作成するために必要なライブラリをインポートする必要があります。

import matplotlib.pyplot as plt
from matplotlib import cbook
from mpl_toolkits.axes_grid1 import AxesGrid

画像データの定義

サンプルの画像データとその範囲を返す関数を定義します。

def get_demo_image():
    z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")  ## 15x15 array
    return z, (-3, 4, -4, 3)

下にカラーバー付きのグリッドを作成する

各列にカラーバー付きの2x2の画像のグリッドを作成します。

def demo_bottom_cbar(fig):
    grid = AxesGrid(fig, 121,  ## similar to subplot(121)
                    nrows_ncols=(2, 2),
                    axes_pad=0.10,
                    share_all=True,
                    label_mode="1",
                    cbar_location="bottom",
                    cbar_mode="edge",
                    cbar_pad=0.25,
                    cbar_size="15%",
                    direction="column"
                    )

    Z, extent = get_demo_image()
    cmaps = ["autumn", "summer"]
    for i in range(4):
        im = grid[i].imshow(Z, extent=extent, cmap=cmaps[i//2])
        if i % 2:
            grid.cbar_axes[i//2].colorbar(im)

    for cax in grid.cbar_axes:
        cax.axis[cax.orientation].set_label("Bar")

    ## This affects all axes as share_all = True.
    grid.axes_llc.set_xticks([-2, 0, 2])
    grid.axes_llc.set_yticks([-2, 0, 2])

右にカラーバー付きのグリッドを作成する

各行にカラーバー付きの2x2の画像のグリッドを作成します。

def demo_right_cbar(fig):
    grid = AxesGrid(fig, 122,  ## similar to subplot(122)
                    nrows_ncols=(2, 2),
                    axes_pad=0.10,
                    label_mode="1",
                    share_all=True,
                    cbar_location="right",
                    cbar_mode="edge",
                    cbar_size="7%",
                    cbar_pad="2%",
                    )
    Z, extent = get_demo_image()
    cmaps = ["spring", "winter"]
    for i in range(4):
        im = grid[i].imshow(Z, extent=extent, cmap=cmaps[i//2])
        if i % 2:
            grid.cbar_axes[i//2].colorbar(im)

    for cax in grid.cbar_axes:
        cax.axis[cax.orientation].set_label('Foo')

    ## This affects all axes because we set share_all = True.
    grid.axes_llc.set_xticks([-2, 0, 2])
    grid.axes_llc.set_yticks([-2, 0, 2])

グラフを作成して関数を呼び出す

最後に、グラフを作成し、カラーバー付きの画像グリッドを作成する関数を呼び出します。

fig = plt.figure()

demo_bottom_cbar(fig)
demo_right_cbar(fig)

plt.show()

まとめ

Matplotlibは、AxesGridツールキットを使ってカラーバー付きの画像グリッドを作成するための簡単な方法を提供します。この実験では、各列にカラーバー付きの2x2の画像のグリッドと、各行にカラーバー付きの2x2の画像のグリッドを作成する方法を示しました。これらの手順に従えば、独自のデータセット用のカラーバー付きの画像グリッドを作成できます。