The direction field is indicated variously, depending on the value of
type
:
Arguments
- x, y
coordinates at which velocities are specified. The length of
x
andy
depends on the form ofu
andv
(vectors or matrices).- u, v
velocity components in the x and y directions. Can be either vectors with the same length as
x, y
, or matrices, of dimensionlength(x)
bylength(y)
.- scalex, scaley
scale to be used for the velocity arrows. Exactly one of these must be specified. Arrows that have
u^2+v^2=1
will have lengthscalex
along the x axis, orscaley
along the y axis, according to which argument is given.- skip
either an integer, or a two-element vector indicating the number of points to skip when plotting arrows (for the matrix
u, v
case). If a single value, the sameskip
is applied to both thex
andy
directions. If a two-element vector, specifies different values for thex
andy
directions.- length
indication of width of arrowheads. The somewhat confusing name of this argument is a consequence of the fact that it is passed to
arrows()
for drawing arrows. Note that the present default is smaller than the default used byarrows()
.- add
if
TRUE
, the arrows are added to an existing plot; otherwise, a new plot is started by callingplot()
withx
,y
andtype="n"
. In other words, the plot will be very basic. In most cases, the user will probably want to draw a diagram first, andadd
the direction field later.- type
indication of the style of arrow-like indication of the direction.
- col
color of line segments or arrows; see
par()
for meaning- pch, cex
plot character and expansion factor, used for
type=1
; seepar()
for meanings- lwd, lty
line width and type, used for
type=2
; seepar()
for meaning- xlab, ylab
x
andy
axis labels- debug
debugging value; set to a positive integer to get debugging information.
- ...
other arguments to be passed to plotting functions (e.g. axis labels, etc).
Details
For
type=1
, each indicator is drawn with a symbol, according to the value ofpch
(either supplied globally, or as an element of the...
list) and of sizecex
, and colorcol
. Then, a line segment is drawn for each, and for thislwd
andcol
may be set globally or in the...
list.For
type=2
, the points are not drawn, but arrows are drawn instead of the line segments. Again,lwd
andcol
control the type of the line.
Examples
library(oce)
plot(c(-1.5, 1.5), c(-1.5, 1.5), xlab = "", ylab = "", type = "n")
drawDirectionField(
x = rep(0, 2), y = rep(0, 2),
u = c(1, 1), v = c(1, -1), scalex = 0.5, add = TRUE
)
plot(c(-1.5, 1.5), c(-1.5, 1.5), xlab = "", ylab = "", type = "n")
drawDirectionField(
x = rep(0, 2), y = rep(0, 2),
u = c(1, 1), v = c(1, -1), scalex = 0.5, add = TRUE, type = 2
)
# 2D example
x <- seq(-2, 2, 0.1)
y <- x
xx <- expand.grid(x, y)[, 1]
yy <- expand.grid(x, y)[, 2]
z <- matrix(xx * exp(-xx^2 - yy^2), nrow = length(x))
gz <- grad(z, x, y)
drawDirectionField(x, y, gz$gx, gz$gy, scalex = 0.5, type = 2, len = 0.02)
oceContour(x, y, z, add = TRUE)