IaGraphExamples: Overplotting and Multiple Windows
Here we give examples of overplotting and going back and forth between
windows. As a result, unlike the other example web pages, the order
the examples are executed on this page is important, as are the
We first import the necessary packages for the examples:
>>> import MA >>> import Numeric as N >>> from IaGraph import *
We will create 4 sets of example data. The first two are 2-D data for contouring and the second two are x-y data for line/scatter plots.
The first dataset gives two "distorted" bulls-eyes centered at the top and bottom of the plot (this is the data used in the general contour plot examples:
>>> xd = N.arange(29) * 10.0 >>> yd = N.arange(21) * 10.0 - 100.0 >>> data = N.outerproduct( N.sin(yd*N.pi/360.) \ ... , N.cos((xd-140.)*N.pi/360.))
The second dataset is a single bulls-eye centered around the (x,y) coordinates (70,30). The last logical line in creating this dataset sets all very small values exactly to zero. This is to prevent VCS from thinking that point is non-zero:
>>> xd1 = N.array([40, 50, 60, 70, 80, 90, 100]) >>> yd1 = N.array([-20, 0, 20, 40, 60, 80]) >>> data1 = N.outerproduct( N.sin(N.arange(6)/5.0*N.pi) \ ... , N.sin(N.arange(7)/6.0*N.pi) ) >>> N.putmask( data1 \ ... , N.where(N.absolute(data1) < 1e-10, 1, 0), 0. )
The third dataset is a few sine wave cycles, with a few points set to "missing" (the missing value value is 1e+20):
x1 = N.arange(30) * 5.0 y1 = 50.0 * N.sin(x1/(4.0*N.pi)) y1[13:16] = 1e+20 y1 = MA.masked_values(y1, 1e+20)
The last dataset is just a series of (x,y) points, with no particular pattern:
x2 = N.array([10, 40, 60, 89, 123, 160, 192]) y2 = N.array([-82, 21, -3, 34, 54, 31, -23])
A link to the full source code for all the examples on this page is
at the bottom of this page. For more information on any command
In window 0 we plot the sine curves (without any plot
symbols) and overplot only the plot symbols from the
fourth dataset (as triangles). Note that there are
more points in the
(x2, y2) dataset than are
plotted. This is because only points that fall within the
(x,y) range defined by the
(x1, y1) dataset
are overplotted. The code>(x1, y1) dataset also has
>>> window(0) >>> plot(x1, y1, psym=0) >>> oplot(x2, y2, psym=5)
We open a new window (number 1) and make a filled contour plot,
with overlain contour lines, using a rainbow color map. Then
we overplot the
(x2, y2) data as a line plot, with
the dash-dot linestyle.
>>> window(1) >>> contour(data, xd, yd) >>> oplot(x2, y2, linestyle=3)
Let's go back to the first plot (in window 0) and add on another
scatter plot. This new scatter plot uses the
dataset, except the ordinates values are the negative of the
original values. We plot these new values with plus symbols.
Note that when you return to an old window the previous canvas is
restored as you had left it; any subsequent changes (such as this
addition of another overplot) will be stored onto this canvas.
>>> window(0) >>> oplot(x2, -y2, psym=1)
In window 2 we plot a default contour plot, which is a filled contour
plot with contour lines overlain, of the first dataset.
On top of that we overplot a line contour plot of the second dataset,
the single bulls-eye.
Note that the default overplot contour plot
is a line contour plot, which differs from the
default plot type for
>>> window(2) >>> contour(data, xd, yd) >>> ocontour(data1, xd1, yd1)
We open another new window (number 3) and plot the 2-D datasets,
except in a reverse order as in the previous example. The second
dataset is plotted as a filled contour plot. Note we use the
[xy]range keywords to make the plot frame large
enough to fit the range of the first dataset. We overplot the
first dataset as a line contour plot.
>>> window(3) >>> contour( data1, xd1, yd1, plottype='fill' \ ... , xrange=[0,280], yrange=[-100,100] ) >>> ocontour(data, xd, yd)
Finally, we do the same overplot as in the previous plot,
except we plot the fill contour on top of the line contour.
This was only possible beginning with
v3.1.1 and CDAT 4.0.
>>> window(4) >>> contour( data, xd, yd, plottype='line' \ ... , xrange=[0,280], yrange=[-100,100] ) >>> ocontour(data1, xd1, yd1, plottype='fill')
Updated: May 11, 2004 by Johnny Lin <email address>. License.