tracers2D
plots a tracer distribution using traditional R graphics.
The topography can be defined when calling this function.
tracers2Drgl
plots a tracer distribution in openGL graphics.
A suitable topography has to be created before calling this function.
1 2 3 4 5 6 7 8 
x, y 
Vectors with x and ycoordinates of the tracers. Should be of equal length. 
colvar 
The variable used for coloring. It need
not be present, but if specified, it should be a vector of
dimension equal to 
col 
Colors to be used for coloring each individual point (if colvar not
specified) or that define the colors as specified by the

NAcol 
Colors to be used for 
breaks 
a set of finite numeric breakpoints for the colors; must have one more breakpoint than color and be in increasing order. Unsorted vectors will be sorted, with a warning. 
colkey 
A logical, The default is to draw the color key on side = 4, i.e. in the right margin.
If 
contour, image 
If 
clim 
Only if 
clab 
Only if 
mask 
A

... 
additional arguments passed to the plotting method scatter2D. The arguments after ... must be matched exactly. 
returns nothing
Karline Soetaert <karline.soetaert@nioz.nl>
tracers3D for plotting time series of tracer distributions in 3D
Ltrans for the output of a particle tracking model
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85  # save plotting parameters
pm < par("mfrow")
## =======================================================================
## Create topography, data
## =======================================================================
# The topographic surface
x < seq(pi, pi, by = 0.2)
y < seq(0, pi, by = 0.1)
M < mesh(x, y)
z < with(M, sin(x)*sin(y))
# Initial condition
xi < c(0.125 * rnorm(100)  pi/2, 0.125 * rnorm(100)  pi/4)
yi < 0.25 * rnorm(200) + pi/2
# the species
species < c(rep(1, 100), rep(2, 100))
# set initial conditions
xp < xi; yp < yi
## =======================================================================
## using a mask and contour
## =======================================================================
Z < z; Z[abs(Z) < 0.1] < NA
par(mfrow = c(2, 2))
for (i in 1:4) {
# update tracer distribution
xp < xp + 0.25 * rnorm(200)
yp < yp + 0.025 * rnorm(200)
# plot new tracer distribution
tracers2D(xp, yp, colvar = species, pch = ".", cex = 5,
main = paste("timestep ", i), col = c("orange", "blue"),
colkey = list(side = 1, length = 0.5, labels = c("sp1","sp2"),
at = c(1.25, 1.75), dist = 0.075), NAcol = "black",
mask = list(x = x, y = y, z = Z),
contour = list(x = x, y = y, z = Z) )
}
## =======================================================================
## using image and contour
## =======================================================================
for (i in 1:4) {
# update tracer distribution
xp < xp + 0.25 * rnorm(200)
yp < yp + 0.025 * rnorm(200)
# plot new tracer distribution
tracers2D(xp, yp, colvar = species, pch = ".", cex = 5,
main = paste("timestep ", i), col = c("orange", "blue"),
colkey = list(side = 1, length = 0.5, labels = c("sp1","sp2"),
at = c(1.25, 1.75), dist = 0.075), NAcol = "black",
contour = list(x = x, y = y, z = z),
image = list(x = x, y = y, z = z, colkey = TRUE))
}
## =======================================================================
## rgl tracer plot
## =======================================================================
# here the image has to be drawn first
image2Drgl(x = x, y = y, z = z)
# set initial conditions
xp < xi; yp < yi
nstep < 40
for (i in 1:nstep) {
# update tracer distribution
xp < xp + 0.25 * rnorm(200)
yp < yp + 0.025 * rnorm(200)
# plot new tracer distribution n
tracers2Drgl(xp, yp, colvar = species, cex = 1,
main = paste("timestep ", i), col = c("orange", "blue"))
}
# reset plotting parameters
par(mfrow = pm)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
Please suggest features or report bugs with the GitHub issue tracker.
All documentation is copyright its authors; we didn't write any of that.