2015-05-17 12 views
7

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) 

risposta