Python/PlotMetData
From mn/geo/geoit
Revision as of 23:18, 3 July 2012 by Jfb (talk | contribs) (→Plotting Meteorological Data with Python)
Plotting Meteorological Data with Python
This is a very brief introduction to using pygrib and NetCDFFile in order to plot met data in Python. Note that you should read the PythonPaths section in order to be sure that you'll be able to import the appropriate modules.
Let's get started with some test data::
mkdir test cd test cp ~sec/kleinproject/FUKU/geop_april* .
Now, start ipython in your shell, or create a python file in the test directory::
ipython
Next, let's take care of some basic imports::
import matplotlib.pyplot as plt
import pygrib
from netCDF4 import Dataset as NetCDFFile
Now, we'll write some python code to plot the netcdf variables::
nci = NetCDFFile('geopot_april_01.nc')
nci.variables #will print a listing of the variables (note: nci.variables is a dictionary)
z = nci.variables['z']
z.shape #what shape is the 'z' array?
for i in range(3):
plt.figure()
plt.imshow(z[0,i,:,:]) #we take the i'th slab
plt.title('netcdf geopot {0}'.format(i))
plt.colorbar()
plt.savefig('nc_geopot_{}'.format(i))
Now, let's take a look at the grib data::
grbs = pygrib.open('geop_april_01_2011.grib')
for grb in grbs:
grb
This will print a listing of all the gribs in the grib file. Make sure we reset the grbs back to the beginning::
grbs.seek(0)
ghs = grbs.select(name='Geopotential')
for i,grb in enumerate(ghs):
plt.figure()
g = grb
plt.imshow(g.values)
title = g.name + ' at level ' + str(g.level) + ' [' + g.units + ']'
plt.title(title)
plt.colorbar()
plt.savefig(g.name + str(i) + '.png')
That's it! In your folder you should have some test plots.