Pynote

Python、機械学習、画像処理について

matplotlib - pcolormesh で連続的に変化する色で配列を可視化する。

関連

基本的な使い方

import matplotlib.pyplot as plt
import numpy as np


def f(x, y):
    return x**2 + y**2 + x * y


X, Y = np.mgrid[-10:11, -10:11]
Z = f(X, Y)

fig, ax = plt.subplots(figsize=(7, 7))
cs = ax.pcolormesh(X, Y, Z)

plt.show()


透過度を設定する。

fig, ax = plt.subplots(figsize=(7, 7))
cs = ax.pcolormesh(X, Y, Z, alpha=0.5)

plt.show()


シェーディングを有効にするかどうかを設定する。

fig = plt.figure(figsize=(12, 6))
params = ['flat', 'gouraud']

for i, param in enumerate(params, 1):
    ax = fig.add_subplot(1, 2, i)
    ax.set_title(param, fontsize=16)
    ax.pcolormesh(X, Y, Z, shading=param)
    # タイトルを設定する。
    s = "'{}'".format(p) if isinstance(p, str) else p
    ax.set_title("shading={}".format(s))

plt.show()


枠線を設定する。

fig, ax = plt.subplots(figsize=(7, 7))
cs = ax.pcolormesh(X, Y, Z, edgecolors='w')

plt.show()


カラーマップを設定する。

fig, ax = plt.subplots(figsize=(7, 7))
cs = ax.pcolormesh(X, Y, Z, cmap='inferno')

plt.show()


疎行列の可視化

基本的な使い方

mat = np.eye(20, 20)

fig, ax = plt.subplots()
ax.spy(mat)

plt.show()


指定した値以下は0要素扱いする。

mat = np.random.randn(10, 10)

fig, ax = plt.subplots()
ax.spy(mat, precision=0.3)

plt.show()


座標系を設定する。

mat = np.eye(20, 20)

fig = plt.figure(figsize=(10, 5))

params = ['upper', 'lower']
for i, p in enumerate(params, 1):
    ax = fig.add_subplot(1, 2, i)
    ax.spy(mat, origin=p)
        # タイトルを設定する。
    s = "'{}'".format(p) if isinstance(p, str) else p
    ax.set_title("origin={}".format(s))

plt.show()


アスペクト比を設定する。

mat = np.eye(20, 20)

fig = plt.figure(figsize=(8, 8))
params = [0.5, 2, 'auto', 'equal']
for i, p in enumerate(params, 1):
    ax = fig.add_subplot(2, 2, i)
    ax.spy(mat, aspect=p)
    # タイトルを設定する。
    s = "'{}'".format(p) if isinstance(p, str) else p
    ax.set_title("aspect={}".format(s))

plt.show()