Learn R Programming

oce (version 1.7-10)

mapDirectionField: Add a Direction Field to an Existing Map

Description

Plot a direction field on a existing map.

Usage

mapDirectionField(
  longitude,
  latitude,
  u,
  v,
  scale = 1,
  length = 0.05,
  code = 2,
  col = par("fg"),
  ...
)

Arguments

longitude, latitude

numeric vectors of the starting points for arrows.

u, v

numeric vectors of the components of a vector to be shown as a direction field.

scale

latitude degrees per unit of u or v.

length

length of arrow heads, passed to arrows().

code

code of arrows, passed to arrows().

col

color of arrows. This may be a single color, or a matrix of colors of the same dimension as u.

...

optional arguments passed to arrows(), e.g. angle and lwd can be useful in differentiating different fields.

Author

Dan Kelley

Details

Adds arrows for a direction field on an existing map. There are different possibilities for how longitude, latitude and u and v match up. In one common case, all four of these are matrices, e.g. output from a numerical model. In another, longitude and latitude are the coordinates along the matrices, and are thus stored in vectors with lengths that match appropriately.

See Also

A map must first have been created with mapPlot().

Other functions related to maps: formatPosition(), lonlat2map(), lonlat2utm(), map2lonlat(), mapArrows(), mapAxis(), mapContour(), mapCoordinateSystem(), mapGrid(), mapImage(), mapLines(), mapLocator(), mapLongitudeLatitudeXY(), mapPlot(), mapPoints(), mapPolygon(), mapScalebar(), mapText(), mapTissot(), oceCRS(), shiftLongitude(), usrLonLat(), utm2lonlat()

Examples

Run this code
if (FALSE) {
library(oce)
data(coastlineWorld)
par(mar=rep(2, 4))
mapPlot(coastlineWorld, longitudelim=c(-120,-55), latitudelim=c(35, 50),
        projection="+proj=laea +lat0=40 +lat1=60 +lon_0=-110")
lon <- seq(-120, -60, 15)
lat <- 45 + seq(-15, 15, 5)
lonm <- matrix(expand.grid(lon, lat)[, 1], nrow=length(lon))
latm <- matrix(expand.grid(lon, lat)[, 2], nrow=length(lon))
## vectors pointed 45 degrees clockwise from north
u <- matrix(1/sqrt(2), nrow=length(lon), ncol=length(lat))
v <- matrix(1/sqrt(2), nrow=length(lon), ncol=length(lat))
mapDirectionField(lon, lat, u, v, scale=3)
mapDirectionField(lonm, latm, 0, 1, scale=3, col='red')
# Color code by longitude, using thick lines
col <- colormap(lonm)$zcol
mapDirectionField(lonm, latm, 1, 0, scale=3, col=col, lwd=2)
}

Run the code above in your browser using DataLab