matplotlibでは、パッケージpylabのmeshgrid関数を利用して二次元マッピング像を生成できる。
meshgrid関数は、1次元データのx,yリストから2次元平面リストを生成する関数で、
(x,y)=(10.0,20.2)のようなxy座標を大量に作り出す。
それぞれをZ=f(x,y)に代入して、二次元マッピングを行うという仕組みである。
meshgrid関数については、たとえば以下のブログで丁寧に解説されている。
d.hatena.ne.jp
具体例
以下のようなコードを作ると
#!/usr/bin/env python # -*- coding: utf-8 -*- #used packages import numpy as np import matplotlib.pyplot as plt import pylab x = np.arange(0, 10, 0.1) y = np.arange(10,0, -0.1) X, Y =pylab.meshgrid(x, y) Z = np.cos(X) + np.cos(Y) fig = plt.figure(figsize=(6,6)) ax = fig.add_subplot(111) im=plt.imshow(Z,extent=(0,10,0,10)) plt.colorbar(im) ax.set_xlabel(r"x",fontsize=20) ax.set_ylabel(r"y",fontsize=20) ax.tick_params(axis='x', labelsize=20) ax.tick_params(axis='y', labelsize=20) plt.show()
こういう画像が生成される。
注意点
デフォの設定?だとy座標の始点が画像左上なので注意。
うっかり以下のようなコードを書くと上下反転する
#!/usr/bin/env python # -*- coding: utf-8 -*- #used packages import numpy as np import matplotlib.pyplot as plt import pylab x = np.arange(0, 10, 0.1) y = np.arange(0,10, 0.1) X, Y =pylab.meshgrid(x, y) Z = np.cos(X) + np.cos(Y) fig = plt.figure(figsize=(6,6)) ax = fig.add_subplot(111) im=plt.imshow(Z,extent=(0,10,0,10)) plt.colorbar(im) ax.set_xlabel(r"x",fontsize=20) ax.set_ylabel(r"y",fontsize=20) ax.tick_params(axis='x', labelsize=20) ax.tick_params(axis='y', labelsize=20) plt.show()
y=0上にZ=2の極大値が現れてないことから、間違った図だとわかる
y = np.arange(0,10, 0.1)の部分を、y = np.arange(10,0, -0.1)とすれば先ほどの正しい図となる