3

データの行列を等高線図にしています。行列の要素の一部は NaN (解が存在しないパラメーターの組み合わせに対応) です。等高線図でこの領域をハッチング領域で示したいと思います。これを達成する方法について何か考えはありますか?

4

1 に答える 1

11

contourfメソッドは、contour配列がマスクされている場所には何も描画しません (こちらを参照)! したがって、プロットの NaN 要素領域をハッチングしたい場合は、プロットの背景をハッチングとして定義するだけです。

次の例を参照してください。

import matplotlib.pyplot as plt
import matplotlib.patches as patches
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111)

# generate some data:
x,y = np.meshgrid(np.linspace(0,1),np.linspace(0,1))
z = np.ma.masked_array(x**2-y**2,mask=y>-x+1)

# plot your masked array
ax.contourf(z)

# get data you will need to create a "background patch" to your plot
xmin, xmax = ax.get_xlim()
ymin, ymax = ax.get_ylim()
xy = (xmin,ymin)
width = xmax - xmin
height = ymax - ymin

# create the patch and place it in the back of countourf (zorder!)
p = patches.Rectangle(xy, width, height, hatch='/', fill=None, zorder=-10)
ax.add_patch(p)
plt.show()

次の図が得られます。 ここに画像の説明を入力

于 2013-08-23T12:53:30.920 に答える