Pcolormesh グリッドとシェーディング

Beginner

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

はじめに

Matplotlib は、Python 用のデータ可視化ライブラリです。Python で静的、アニメーション、インタラクティブな可視化を作成するためのさまざまなツールを提供します。この実験では、Matplotlib のpcolormeshpcolor関数を使用して 2 次元グリッドを可視化する方法を学びます。

VM のヒント

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

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

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

必要なライブラリをインポートする

まず、次のコードブロックを実行して、必要なライブラリである Matplotlib と NumPy をインポートする必要があります。

import matplotlib.pyplot as plt
import numpy as np

可視化用のデータを作成する

次に、可視化に使用する 2 次元グリッドを作成します。NumPy のmeshgrid関数を使用してグリッドを作成できます。meshgrid関数は、グリッド点の座標を表す 2 つのベクトルxyが与えられたときに点のグリッドを作成します。次のコードブロックを使用して 5x5 の点のグリッドを作成します。

nrows = 5
ncols = 5
x = np.arange(ncols + 1)
y = np.arange(nrows + 1)
X, Y = np.meshgrid(x, y)
Z = X + Y

フラットシェーディング

Matplotlib のpcolormesh関数は、2 次元グリッドを可視化できます。最も少ない仮定でグリッドを指定するのはshading='flat'であり、グリッドが各次元のデータよりも 1 つ大きい場合、つまり形状が(M+1, N+1)の場合です。その場合、XYは、Zの値で塗りつぶされる四角形の角を指定します。次のコードブロックを使用してグリッドを可視化できます。

fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='flat', cmap='viridis')
ax.set_title('Flat Shading')
plt.show()

フラットシェーディング、同じ形状のグリッド

グリッドが各次元のデータと同じ形状の場合、shading='flat'を使用することはできません。歴史的に、Matplotlib はこの場合、Matlab の動作に合わせて、Zの最後の行と列を無視してしまいました。この動作が依然として望まれる場合は、最後の行と列を手動で削除してください。次のコードブロックを使用してグリッドを可視化できます。

fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z[:-1, :-1], shading='flat', cmap='viridis')
ax.set_title('Flat Shading, Same Shape Grid')
plt.show()

最寄りシェーディング、同じ形状のグリッド

通常、ユーザーがXYZをすべて同じ形状にするときに、1 行と 1 列のデータを削除することは意図していません。この場合、Matplotlib はshading='nearest'を許可し、塗りつぶされた四角形をグリッド点の中心に配置します。shading='nearest'で正しい形状でないグリッドが渡された場合、エラーが発生します。次のコードブロックを使用してグリッドを可視化できます。

fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='nearest', cmap='viridis')
ax.set_title('Nearest Shading, Same Shape Grid')
plt.show()

自動シェーディング

ユーザーがコードによって自動的に使用するものを選択して欲しい場合があります。この場合、shading='auto'XY、およびZの形状に基づいてflatまたはnearestシェーディングを使用するかどうかを決定します。次のコードブロックを使用してグリッドを可視化できます。

fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, shading='auto', cmap='viridis')
ax.set_title('Auto Shading')
plt.show()

グーローシェーディング

グーローシェーディングも指定できます。この場合、四角形内の色はグリッド点間で線形補間されます。XYZの形状は同じでなければなりません。次のコードブロックを使用してグリッドを可視化できます。

fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='gouraud', cmap='viridis')
ax.set_title('Gouraud Shading')
plt.show()

まとめ

この実験では、Matplotlib のpcolormeshpcolor関数を使って 2 次元グリッドを可視化する方法を学びました。flatnearestautogouraudなどのさまざまなシェーディングオプションについて学びました。また、NumPy のmeshgrid関数を使って 2 次元グリッドを作成する方法も学びました。