import matplotlib.pyplot as plt import cartopy import cartopy.crs as ccrs import cartopy.feature as cfeat print cartopy.__version__ fig = plt.figure(figsize=(10, 8)) ax = plt.axes(projection=ccrs.PlateCarree()) ax.coastlines() plt.show() mpl_ax = plt.axes() carto_ax = plt.axes(projection=ccrs.Mercator()) msg = '{} axes: {}, has coastlines method: {}' print msg.format('Matplotlib', type(mpl_ax), hasattr(mpl_ax, 'coastlines')) print msg.format('Cartopy', type(carto_ax), hasattr(carto_ax, 'coastlines')) plt.close() # Prevents iPython evaluating the axes calls and drawing an empty axes. border_clr = (0.6, 0.6, 0.6) fig = plt.figure(figsize=(10, 8)) ax = plt.axes(projection=ccrs.PlateCarree()) ax.add_feature(cfeat.OCEAN) ax.add_feature(cfeat.LAND) ax.add_feature(cfeat.BORDERS, edgecolor=border_clr, linestyle=':') ax.add_feature(cfeat.COASTLINE) plt.show() sea_blue = '#d1ffff' land_green = '#006600' ctry_light_grey = '#a6a6a6' fig = plt.figure(figsize=(10, 8)) ax = plt.axes(projection=ccrs.PlateCarree()) ax.add_feature(cfeat.OCEAN, facecolor=sea_blue) ax.add_feature(cfeat.LAND, facecolor=land_green) ax.add_feature(cfeat.BORDERS, edgecolor=ctry_light_grey, linestyle=':') ax.add_feature(cfeat.COASTLINE) plt.show() import shapely.geometry latmin, latmax = -1.5, 21.5 lonmin, lonmax = 75., 108. box = shapely.geometry.box(lonmin, latmin, lonmax, latmax) fig = plt.figure(figsize=(10, 8)) ax = plt.axes(projection=ccrs.PlateCarree()) ax.add_feature(cfeat.OCEAN, facecolor=sea_blue) ax.add_feature(cfeat.LAND, facecolor=land_green) ax.add_feature(cfeat.BORDERS, edgecolor=ctry_light_grey, linestyle=':') ax.add_feature(cfeat.COASTLINE) ax.add_geometries([box], ccrs.PlateCarree(), facecolor='none', edgecolor='b', linewidth=2) plt.show() fig = plt.figure(figsize=(10, 8)) ax = plt.axes(projection=ccrs.PlateCarree()) ax.set_extent((lonmin, lonmax, latmin, latmax), crs=ccrs.PlateCarree()) ax.add_feature(cfeat.OCEAN, facecolor=sea_blue) ax.add_feature(cfeat.LAND, facecolor=land_green) ax.add_feature(cfeat.BORDERS, edgecolor=ctry_light_grey, linestyle=':') ax.add_feature(cfeat.COASTLINE) plt.show() scale = '50m' fig = plt.figure(figsize=(10, 8)) ax = plt.axes(projection=ccrs.PlateCarree()) ax.set_extent((lonmin, lonmax, latmin, latmax), crs=ccrs.PlateCarree()) ax.coastlines(scale, zorder=5) oceans = cfeat.NaturalEarthFeature('physical', 'ocean', scale, edgecolor='face', facecolor=sea_blue) land = cfeat.NaturalEarthFeature('physical', 'land', scale, edgecolor='face', facecolor=land_green) borders = cfeat.NaturalEarthFeature('cultural', 'admin_0_boundary_lines_land', scale, linestyle=':', edgecolor=ctry_light_grey, facecolor='none') ax.add_feature(oceans) ax.add_feature(land) ax.add_feature(borders) plt.show() fig = plt.figure(figsize=(10, 8)) ax = plt.axes(projection=ccrs.PlateCarree()) ax.set_extent((lonmin, lonmax, latmin, latmax), crs=ccrs.PlateCarree()) ax.coastlines(scale, zorder=5) # Add the geographical features as before. oceans = cfeat.NaturalEarthFeature('physical', 'ocean', scale, edgecolor='face', facecolor=cfeat.COLORS['water']) land = cfeat.NaturalEarthFeature('physical', 'land', scale, edgecolor='face', facecolor=cfeat.COLORS['land']) borders = cfeat.NaturalEarthFeature('cultural', 'admin_0_boundary_lines_land', scale, linestyle='--', linewidth=1.5, edgecolor=border_clr, facecolor='none') ax.add_feature(oceans) ax.add_feature(land) ax.add_feature(borders) # And add some more features. rivers = cfeat.NaturalEarthFeature('physical', 'rivers_lake_centerlines', scale, edgecolor='b', facecolor='none', linewidth=0.8) lakes = cfeat.NaturalEarthFeature('physical', 'lakes', scale, edgecolor='face', facecolor='b') roads = cfeat.NaturalEarthFeature('cultural', 'roads', '10m', edgecolor='g', facecolor='none', linewidth=0.6) ax.add_feature(rivers) ax.add_feature(lakes) ax.add_feature(roads) plt.show()