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

Python 填充大陆,但仍然可见数据覆盖,python,matplotlib,matplotlib-basemap,Python,Matplotlib,Matplotlib Basemap,我用matplotlib绘制了一个图,它可以可视化我的数据,但为了添加更多细节,我想用一种颜色填充大陆,这样人们就可以区分陆地和海洋 但是如果我把所有这些加在一起,fillcontractions总是画在上面,使我的数据消失。我可以更改alpha并再次显示我的绘图,但这会使绘图的颜色不同 我看过一些地图,人们用它做对了,但我用我的地图找不到。我的代码: m = Basemap(projection='merc',llcrnrlon=extent[0], llcrnrlat

我用matplotlib绘制了一个图,它可以可视化我的数据,但为了添加更多细节,我想用一种颜色填充大陆,这样人们就可以区分陆地和海洋

但是如果我把所有这些加在一起,
fillcontractions
总是画在上面,使我的数据消失。我可以更改
alpha
并再次显示我的绘图,但这会使绘图的颜色不同

我看过一些地图,人们用它做对了,但我用我的地图找不到。我的代码:

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')

我能用Cartopy快速解决它。在这里,我可以添加一个海洋要素,而不是陆地要素(在Cartopy中,陆地要素也是在数据顶部绘制的)。这就产生了同样的效果


最后,我想补充一点,Cartopy是一个非常强大的模块,值得一试。从我在某处看到的Basemap的痛苦中,尝试在pcolormesh命令中使用zorder=4


最好的

你可以使用
m.drawlsmask
,它不会覆盖你的绘图。

由于某种原因,
drawlsmask
的分辨率远远低于你用
fillcontraction
得到的分辨率,因此它不是放大地图的好办法。