1

PythonモジュールnetCDF4を使用し、mpl_toolkits Basemapで画像を作成して、気象モデルの出力を分析しています。

気圧の等高線図をいくつか作成しましたが、これは非常に簡単でした。今、私は風にとげを追加したいのですが、最終的に海の上に風だけのプロットになりました. いじり回した後、ベースマップ関数 fillcontinents() が実際にこれらの風のバーブをオーバーレイしていることを発見しましたが、バーブ関数は後で呼び出されます。そのため、fillcontinents() 関数を削除すると、必要に応じてすべての風刺が得られました。

大陸を埋める方法はありますか?

私のコードは次のようになります (一部のグラフィカル パラメータは省略しましたが、質問には重要ではありません)。

from netCDF4 import Dataset
from mpl_toolkits.basemap import Basemap
import numpy as np

file = 'W:/projects/wrfout_d01_2013-10-27_120000'
data = Dataset(file)

# Load grid
longrid = data.variables['XLONG'][:].squeeze() # Removes time dimension
latgrid = data.variables['XLAT'][:].squeeze()

# Load surface pressure
p_surf = data.variables['PSFC'][:].squeeze()

# Load wind components
u = data.variables['U10'][:].squeeze()
v = data.variables['V10'][:].squeeze()

m = Basemap(projection='cyl', resolution='l',
                    llcrnrlat= 42., llcrnrlon= -12.,
                    urcrnrlat= 57., urcrnrlon= 12.)
m.drawcountries()
m.drawcoastlines()
m.fillcontinents('#FAF0E6') ### Blanking out this line gives barbs over land
m.drawmeridians(np.arange(-180,180,10),labels=[0,0,1,1])
m.drawparallels(np.arange(-90,90,10),labels=[1,0,0,0])

x,y = m(longrid,latgrid)
ct = m.contour(x,y,p_surf, colors='#1C8CFC') ### So far, so good
ct.clabel(fmt='%1i')

m.barbs(x,y,u,v)

plt.savefig('p_surf-barbs-map.png')
4

1 に答える 1

0

ポールの助けを借りて、私は解決策を見つけました:

バーブをプロットするときは、次のように高い値 (私は 100 を使用) で変数 zorder を追加します。

m.barbs(x, y, u, v, zorder=100)
于 2016-11-01T08:43:41.967 に答える