Plotting data on a map with python

 There are two main python packages that may be used to plot data on a map using Python: Basemap, Iris/Cartopy, and PyNGL (the python interface to NCL). This is a brief tutorial on how to use the Basemap package.Basemap documentation: http://matplotlib.org/basemap/Make sure that you are using Python 2.7.2 on Scholar/Carter (type 'module load python')First thing, import the module!`from mpl_toolkits.basemap import Basemap`make sure you have also imported numpyNow read in some of your WRF netcdf data (use whichever package you want: Nio, netCDF4, scipy.io.netcdf). Make sure to read in your latitude and longitude values, as you need these in order to have georeferenced data. After you've done this, the next step is to set up your map. Which projection are you going to use?  Since we set up our original WRF domain as a Lambert Conic Conformal (lcc) projection, it makes sense to use that projection. To set up the projection, we'll have to specify many of the same things we did in our namelist.wps (see API documentation for more details: http://matplotlib.org/basemap/api/basemap_api.html#module-mpl_toolkits.basemap)lat_1: first standard parallellat_2: second standard parallellat_0, lon_0: latitude and longitude of central pointprojection name: here will be 'lcc'area_thresh: may be specified if you want to ignore plotting of coastline features less than a certain arearesolution: specifies how coarse or detailed you want the plotted boundaries. May be specified as'c': coarse'l': low'i': intermediate'h': high'f': fullllcrnrlat: latitude of lower-left corner of your mapurcrnrlat: latitude of upper-right corner of your mapllcrnrlon: longitude of lower-left corner of your mapurcrnrlon: latitude of upper-right corner of your map           example:`#these next four parameters are specified the same as in our namelist.wpslon_0 = -95.  lat_0 = 40.lat_1 = 45.lat_2 = 28.#set lat/lons for lower-left and upper-right corners of our map#this assumes that you have read in your 2-D (no time dimension) lat/lon values #(here, names of arrays are 'lat' and 'lon')imax,jmax = lat.shapeminlat = lat[0,0]maxlat = lat[imax-1,jmax-1]minlon = lon[0,0]maxlon = lon[imax-1,jmax-1]``#set up the map``m = Basemap(projection='lcc',lon_0=lon_0,lat_0=lat_0,\``              llcrnrlat=minlat,urcrnrlat=maxlat, llcrnrlon=minlon,urcrnrlon=maxlon,\``              lat_1=lat_1,lat_2=lat_2,resolution='h',area_thresh=1000.)`        You can of course change the lat/lon values of your corners if you want to zoom in on an area, say Oklahoma. I've found that:`minlat = 33. ``maxlat = 38. ``minlon = -103. ``maxlon = -93.`        works well for plotting  Oklahoma.In order to be able to plot data on our map, we have to convert our georeferenced coordinates to map projection coordinates. This is made simple in basemap with a simple function call:`x, y = m(lon,lat)`        Our longitude values will be our x coordinate, and latitude the y coordinate.