Difference between revisions of "Python/PlotMetData"

From mn/geo/geoit
Jump to: navigation, search
(Created page with "<rst> ========================================== Plotting Meteorological Data with Python ========================================== This is a very brief introduction to using p...")
 
 
(5 intermediate revisions by one other user not shown)
Line 1: Line 1:
<rst>
+
= 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 `Setting Python Paths<PythonPaths>` section in order to be sure that you'll be able to import the appropriate modules.
+
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 [[Python/SettingPaths]] section in order to be sure that you'll be able to import the appropriate modules.
  
 
Let's get started with some test data::
 
Let's get started with some test data::
  
 
     mkdir test
 
     mkdir test
    cd test
+
  cd test
    cp ~sec/kleinproject/FUKU/geop_april* .
+
  cp ~sec/kleinproject/FUKU/geop_april* .
   
+
 
 +
 
 
Now, start ipython in your shell, or create a python file in the test directory::
 
Now, start ipython in your shell, or create a python file in the test directory::
  
 
     ipython
 
     ipython
   
+
 
Next, let's take care of some basic imports::
 
 
 
    import matplotlib.pyplot as plt
 
    import pygrib
 
    from mpl_toolkits.basemap import NetCDFFile #note this may be deprecated and I will update as necessary
 
 
 
 
 
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::
+
Next, let's take care of some basic imports:: <source lang="python">
  
    grbs.seek(0)
+
import matplotlib.pyplot as plt
    ghs = grbs.select(name='Geopotential')
+
import pygrib
    for i,grb in enumerate(ghs):
+
from netCDF4 import Dataset as NetCDFFile
        plt.figure()
+
</source>
        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.
+
<br/>Now, we'll write some python code to plot the netcdf variables:: <source lang="python">
 +
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))
 +
 +
</source> Now, let's take a look at the grib data:: <source lang="python">
 +
grbs = pygrib.open('geop_april_01_2011.grib')
 +
for grb in grbs:
 +
grb
 +
</source> This will print a listing of all the gribs in the grib file. Make sure we reset the grbs back to the beginning:: <source lang="python">
 +
grbs.seek(0)
 +
ghs = grbs.select(name='Geopotential')
  
</rst>
+
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')
 +
</source> That's it! In your folder you should have some test plots.

Latest revision as of 10:29, 11 February 2015

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 Python/SettingPaths 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.