2015-05-17 42 views
7

Matplotlib aracılığıyla ABD ve Kanada'nın doğu sahil şeridinin bir temel haritası üzerindeki verileri çiziyorum. Taban katmanına (doldurulmuş bir kontur çizimine) ek olarak, Matplotlib'in readshapefile aracı kullanılarak verilerin üzerine bu odak bölgesinin bir şekil dosyasının üzerine yerleştirdim. İçe aktarılan şekil dosyası dışındaki alan (basemap/matplotlib)

ben shape dışındaki bütün Gridlenmiş verileri maskelemek nasıl merak ediyorum. Belli ki, Matplotlib aracılığıyla bir masum komutası yapabilirim, fakat hala St. Lawrence'ın batısındaki dolu kontürlerle birlikte kalırdım. Şimdi bunu nasıl yapacak kimse var mı? İnternette fazla şansım olmadı.

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) 

cevap