はじめに
この実験では、グリッドに変換を適用することで、GridHelperCurveLinear を使ってカスタムグリッドと目盛り線を定義する方法について、手順を追って説明します。カスタムグリッドと目盛り線を作成するために、Python の Matplotlib ライブラリを使用します。
VM のヒント
VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。
時々、Jupyter Notebook が読み込み終わるまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題に遭遇した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
必要なライブラリをインポートする
最初のステップは、必要なライブラリをインポートすることです。これには、matplotlib.pyplot、numpy、ExtremeFinderSimple、MaxNLocator、およびGridHelperCurveLinearが含まれます。
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axisartist.axislines import Axes
from mpl_toolkits.axisartist.grid_finder import (ExtremeFinderSimple, MaxNLocator)
from mpl_toolkits.axisartist.grid_helper_curvelinear import GridHelperCurveLinear
変換関数を定義する
2 番目のステップは、変換関数を定義することです。この例では、x 軸の値を変換して y 軸の値は変更しないためにtr関数を使用します。inv_tr関数は、変換を逆にするために使用されます。
def tr(x, y):
return np.sign(x)*abs(x)**.5, y
def inv_tr(x, y):
return np.sign(x)*x**2, y
GridHelperCurveLinear を定義する
3 番目のステップは、GridHelperCurveLinear インスタンスを定義することです。2 番目のステップで定義した変換関数を使ってグリッドを変換します。また、目盛りの密度を高めるために、grid_locator1とgrid_locator2をMaxNLocator(nbins=6)に設定します。
grid_helper = GridHelperCurveLinear(
(tr, inv_tr),
extreme_finder=ExtremeFinderSimple(20, 20),
grid_locator1=MaxNLocator(nbins=6), grid_locator2=MaxNLocator(nbins=6))
軸を定義して画像を表示する
4 番目のステップは、3 番目のステップで作成したgrid_helperインスタンスを使って軸を定義することです。また、imshow関数を使って画像を表示します。
ax1 = fig.add_subplot(axes_class=Axes, grid_helper=grid_helper)
ax1.imshow(np.arange(25).reshape(5, 5), vmax=50, cmap=plt.cm.gray_r, origin="lower")
グラフを作成する
最後のステップは、plt.figure関数を使ってグラフを作成することです。グラフのサイズを (7, 4) に設定し、2 - 4 のステップで作成したcurvelinear_test1関数を呼び出します。
if __name__ == "__main__":
fig = plt.figure(figsize=(7, 4))
curvelinear_test1(fig)
plt.show()
まとめ
この実験では、グリッドに変換を適用することで、GridHelperCurveLinear を使ってカスタムグリッドと目盛りを定義する方法を学びました。Python の Matplotlib ライブラリを使って、軸に表示される 5x5 の行列に対するカスタムグリッドと目盛りを作成しました。