Numeric array of 2-D latitude-longitude
data, make a smooth, filled contour plot with color bar.
First we import the packages we'll need:
import Numeric as N
import cdms, vcs
Note that we import
Numeric with the
N to save us some typing.
Next let's make some sample data and the longitude and latitude
vectors. The grid is global and 15 x 15 degrees.
The data is in
consists of two "distorted bullseyes" centered around each pole
(positive over the North Pole and negative over the South Pole).
lat vector goes from 90S to 90N, and the longitude
lon vector goes from -180E to 180E:
lat = N.arange(13) * 15.0 - 90.0
lon = N.arange(25) * 15.0 - 180.0
data = N.outerproduct(N.sin(lat*N.pi/360.), N.cos(lon*N.pi/360.))
data array is 13 x 24,
latitude x longitude. This means each
row corresponds to a constant latitude, and each
column is a constant longitude.
To plot the data, the first thing we have to do is initialize a VCS canvas, through instantiating a canvas object:
v = vcs.init()
Then we create CDMS axis objects for the longitude and latitude axis:
lonAxis = cdms.createAxis(lon)
latAxis = cdms.createAxis(lat)
Finally, we use the
isofill method of our canvas
to plot the data with smooth, filled contours:
v.isofill(data, xaxis=lonAxis, yaxis=latAxis, continents=1, name="Example")
In plotting, VCS automatically assumes the x-axis runs through
all the columns of
data and the y-axis runs
through all the rows. Setting the keyword
continents=1 outlines "fine" continents.
name is a string that specifies the title.
The plot looks like:
To write out the plot to a Postscript file
'l' specifies landscape;
to print to portrait set the argument to
Note that plotting portrait will sometimes cut-off the plot
at the paper's edge.
To write out the plot to a GIF file
eg.gif if it exists.
Although the plotting methods do accept keywords to allow you to control things like axis title in your plot, CDAT's support of these methods can be spotty. To really take advantage of the package, you have to think and use CDAT in terms of objects. This is the approach I take in a more complex latitude-longitude contour plot example.
Notes: Thanks to Dean Williams for the help! This discussion applies to CDAT 3.3.