2015-05-17 16 views
7

Tôi đang vẽ dữ liệu trên bản đồ cơ sở của biển phía đông của Vương quốc Anh và Canada thông qua Matplotlib. Ngoài lớp cơ sở (một ô đường viền đầy), tôi đã chồng lên một shapefile của vùng lấy nét này trên đỉnh dữ liệu bằng công cụ readshapefile của Matplotlib.Khu vực mặt nạ bên ngoài shapefile nhập khẩu (basemap/matplotlib)

Tôi đang tự hỏi làm thế nào tôi có thể che khuất tất cả các dữ liệu theo dạng lưới bên ngoài của shapefile. Tôi rõ ràng có thể làm một lệnh mặt nạ thông qua Matplotlib, nhưng tôi vẫn sẽ bị bỏ lại với các đường nét đầy phía tây của St. Lawrence. Có ai bây giờ làm thế nào để làm điều này? Tôi đã không có nhiều may mắn tìm kiếm trực tuyến.

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) 

Trả lời

Các vấn đề liên quan