Sto stampando i dati su una mappa di base della costa orientale degli Stati Uniti e del Canada attraverso Matplotlib. Oltre al livello di base (una trama di contorno riempita), ho sovrapposto uno shapefile di questa regione di messa a fuoco in cima ai dati usando lo strumento readshapefile di Matplotlib.Area maschera esterna allo shapefile importato (basemap/matplotlib)
che sto chiedendo come posso mascherare tutti i dati a griglia al di fuori dello shapefile. Ovviamente posso eseguire un comando maskocean tramite Matplotlib, ma mi resterebbero ancora i contorni pieni a ovest di St. Lawrence. Qualcuno ora come si fa? Non ho avuto molta fortuna a cercare online.
def make_map(lon,lat,param):
fig, ax = plt.subplots()
ax.axis('off')
x1 = -83.
x2 = -57.
y1 = 37.
y2 = 50.
projection='merc'
resolution='h'
m = Basemap(projection=projection, llcrnrlat=y1, urcrnrlat=y2, llcrnrlon=x1,
urcrnrlon=x2, resolution=resolution)
x,y = m((lon-360.),lat)
m.ax = ax
my_cmap = cm.get_cmap('coolwarm')
pp = m.contourf(x, y, param, 30, cmap=my_cmap, extend='both')
m.drawmapscale(-67, 39.5, -70, 43.5, 500, fontsize=8, barstyle='fancy')
return fig, m, x, y
def drawstates(ax, shapefile='../StateProv_UTMrp'):
shp = m.readshapefile(shapefile, 'states',zorder = 1, drawbounds=True)
for nshape, seg in enumerate(m.states):
poly = Polygon(seg, facecolor='w',alpha=0.0, edgecolor='k')
ax.add_patch(poly)
fig, m, x, y = make_map(lon, lat, param)
drawstates(m.ax)