4

統計的に有意な結果が得られた領域のみをハッチングしようとしています。Basemap と pcolormesh を使用してこれを行うにはどうすればよいですか?

plt.figure(figsize=(12,12))

lons = iris_cube.coord('longitude').points
lats = iris_cube.coord('latitude').points

m = Basemap(llcrnrlon=lons[0], llcrnrlat=lats[0], urcrnrlon=lons[-1], urcrnrlat=lats[-1], resolution='l')

lon, lat = np.meshgrid(lons, lats)

plt.subplot(111)

cs = m.pcolormesh(lon, lat, significant_data, cmap=cmap, norm=norm, hatch='/')
4

2 に答える 2

2

pcolormeshハッチングをサポートしていないようです ( https://github.com/matplotlib/matplotlib/issues/3058参照)。代わりに、 を使用することをお勧めします。このpcolor例から始めると、次のようになります。

import matplotlib.pyplot as plt
import numpy as np

dx, dy = 0.15, 0.05
y, x = np.mgrid[slice(-3, 3 + dy, dy),
                slice(-3, 3 + dx, dx)]
z = (1 - x / 2. + x ** 5 + y ** 3) * np.exp(-x ** 2 - y ** 2)
z = z[:-1, :-1]
zm = np.ma.masked_less(z, 0.3)

cm = plt.pcolormesh(x, y, z)
plt.pcolor(x, y, zm, hatch='/', alpha=0.)
plt.colorbar(cm)
plt.show()

ここで、0.3 より大きい z の値を取得するためにマスク配列が使用され、これらは を使用してハッチングされpcolorます。

ここに画像の説明を入力

上に別の色がプロットされるのを避けるために (ハッチングのみが表示されるようにするため)、alpha を 0 に設定しましpcolorた。別の方法は、パッチを使用して、必要な領域に割り当てることです。Python: Leave Numpy NaN values from matplotlib heatmap and its legend の例を参照してください。pcolor. _

于 2017-01-16T14:13:27.687 に答える