[Python][Matplotlib] 等高線プロットcontourfで一部に色を塗らない
結論から言えば、色を塗りたくない場所にnp.nan
を代入しておけばよい。
通常のcontourf
from itertools import product import matplotlib.pyplot as plt import numpy as np X = np.linspace(0, 5, 20) Y = np.linspace(0, 5, 20) X, Y = np.meshgrid(X, Y) Z0 = np.cos(1.5 * X) * np.cos(1.5 * Y) fig = plt.figure() ax = fig.add_subplot() cs = ax.contourf(X, Y, Z0) fig.colorbar(cs, ax=ax) fig.savefig('test_Z0.jpg', dpi=600) plt.close(fig)
一部領域で色を塗らないcontourf
例えば右下()で色を塗らない場合。
from itertools import product import matplotlib.pyplot as plt import numpy as np X = np.linspace(0, 5, 20) Y = np.linspace(0, 5, 20) Z0 = np.cos(1.5 * X) * np.cos(1.5 * Y) Z1 = np.copy(Z0) for yi, xi in product(range(Z1.shape[0]), range(Z1.shape[0])): if Y[yi] < X[xi]: Z1[yi][xi] = np.nan else: Z1[yi][xi] = np.cos(1.5 * X[xi]) * np.cos(1.5 * Y[yi]) fig = plt.figure() ax = fig.add_subplot() cs = ax.contourf(X, Y, Z1) fig.colorbar(cs, ax=ax) fig.savefig('test_Z1.jpg', dpi=600) plt.close(fig)