填充大陆但仍然可见数据覆盖

时间:2013-12-25 06:29:13

标签: python matplotlib matplotlib-basemap

我使用matplotlib创建了一个图,它可以显示我的数据,但是为了添加更多细节,我想用一种颜色填充大陆,这样人们就可以区分土地和海洋。

但如果我将所有这些加在一起,那么总是将fillcontinents绘制在最顶层,使我的数据消失。我可以更改alpha并再次显示我的情节,但这会使我的情节颜色不同。

我已经看过人们使用point data做出正确的地图,但我无法用我的地图获取它。我的代码:

m = Basemap(projection='merc',llcrnrlon=extent[0],
            llcrnrlat=extent[3],urcrnrlon=extent[1],
            urcrnrlat=extent[2], resolution='h', lat_0=lat_mid,
            lon_0=extent[0])

# annotate
m.readshapefile(ShapefileCoastlines, 'coastlines', drawbounds=True, linewidth=0.2, color='0.1')
m.readshapefile(ShapefileCountry, 'country', drawbounds=True, linewidth=0.2, color='0.1' )
m.fillcontinents(color='coral', lake_color='aqua')
m.drawmeridians(np.arange(0,360,15), linewidth=.2, labels=[1,0,0,1], labelstyle='+/-', color='grey' ) 
m.drawparallels(np.arange(-90,90,15), linewidth=.2, labels=[1,0,0,1], labelstyle='+/-', color='grey')
m.drawmapboundary(linewidth=0.5, color='grey')

# plot data
im1 = m.pcolormesh(xx, yy, data.T, cmap=cmap, norm=norm) 
m.colorbar(im1, location='bottom', cmap=cmap, norm=norm, ticks=[-1]+bounds+[1], pad = '6%', extend='both', extendfrac='auto').set_label('units')

3 个答案:

答案 0 :(得分:2)

我在某处看到,请尝试在pcolormesh命令中使用zorder = 4.

最佳

答案 1 :(得分:0)

我能够使用Cartopy快速解决它。在这里,我可以添加OCEAN功能而不是LAND功能(也可以在数据顶部绘制Cartopy)。这给出了同样的效果。

最后会补充一点,Cartopy是一个非常强大的模块,值得尝试来自Basemap的痛苦

答案 2 :(得分:0)

您可以使用m.drawlsmask,但不会覆盖您的情节。