Learn R Programming

rasterVis (version 0.24)

vectorplot-methods: Vector plots of Raster objects.

Description

vectorplot displays vector fields from Raster objects using arrows.

streamplot displays streamlines with a procedure inspired by the FROLIC algorithm (see references): for each point (droplet) of a jittered regular grid, a short streamline portion (streamlet) is calculated by integrating the underlying vector field at that point. The main color of each streamlet indicates local vector magnitude (slope). Streamlets are composed of points whose sizes, positions and color degradation encode the local vector direction (aspect).

Usage

## S3 method for class 'Raster':
vectorplot(object, layers,
            narrows=2e3, lwd.arrows=0.6, length=unit(5e-2, 'npc'),
            maxpixels=1e5, region=TRUE,  
            isField=FALSE, reverse=FALSE, unit='radians', ...)

## S3 method for class 'Raster': streamplot(object, layers, droplet = list(), streamlet = list(), par.settings=streamTheme(), isField = FALSE, reverse=FALSE, parallel=TRUE, mc.cores=detectCores(), cl=NULL, ...)

## S3 method for class 'RasterStack': streamplot(object, layers, droplet = list(), streamlet = list(), par.settings=streamTheme(), isField = FALSE, reverse=FALSE, parallel=TRUE, mc.cores=detectCores(), cl=NULL, ...)

Arguments

object
A Raster object. If isField=FALSE the vector field is calculated internally from the result of terrain.
layers
A numeric or character which should indicate the layers to be displayed.
maxpixels
A numeric, number of cells to be shown if region=TRUE or if region is a Raster* object.
narrows
A numeric, number of arrows.
lwd.arrows
Numeric, width of the lines of the arrows
length
Unit, extent of the arrow head.
droplet
A list whose elements define the droplet configuration:
  • cropExtent: Percentage of the object extent to be cropped (default .97) to avoid droplets at boundaries
pc: Percentage of cells to be used for the streamlets calculatio

item

  • streamlet
  • h: streamlet calculation step (default mean(res(object))).
  • par.settings
  • parallel
  • cl
  • mc.cores
  • region
  • reverse
  • isField
  • unit
  • ...

itemize

  • L: length of the streamlet (number of points, default 10)

References

R. Wegenkittl and E. Gröller, Fast Oriented Line Integral Convolution for Vector Field Visualization via the Internet, Proceedings IEEE Visualization ’97, 1997, http://www.cg.tuwien.ac.at/research/vis-dyn-syst/frolic/frolic_crc.pdf

See Also

panel.arrows, levelplot, terrain, mclapply, parLapply

Examples

Run this code
proj <- CRS('+proj=longlat +datum=WGS84')

df <- expand.grid(x=seq(-2, 2, .01), y=seq(-2, 2, .01))
df$z <- with(df, (3*x^2 + y)*exp(-x^2-y^2))
r1 <- rasterFromXYZ(df, crs=proj)
df$z <- with(df, x*exp(-x^2-y^2))
r2 <- rasterFromXYZ(df, crs=proj)
df$z <- with(df, y*exp(-x^2-y^2))
r3 <- rasterFromXYZ(df, crs=proj)
s <- stack(r1, r2, r3)
names(s) <- c('R1', 'R2', 'R3')

vectorplot(r1)
vectorplot(r2, par.settings=RdBuTheme())
vectorplot(r3, par.settings=PuOrTheme())

## A vector field defined by the horizontal and vertical components
u <- v <- raster(xmn=0, xmx=2, ymn=0, ymx=2, ncol=1e3, nrow=1e3)
x <- init(u, v='x')
y <- init(u, v='y')
u <- y * cos(x)
v <- y * sin(x) 
field <- stack(u, v)
names(field) <- c('u', 'v')

vectorplot(field, isField='dXY', narrows=5e2)

## We can display both components as the background
vectorplot(field, isField='dXY', narrows=5e2, region=field)

## Or even compute the slope and use it as the background region
slope <- sqrt(u^2 + y^2)
vectorplot(field, isField='dXY', narrows=5e2,
           region=slope, par.settings=BTCTheme())

##################################################################
## Streamplot
##################################################################
## If no cluster is provided, streamplot uses parallel::mclapply except
## with Windows. Therefore, next code could spend a long time under
## Windows.
streamplot(r1)

## With a cluster
hosts <- rep('localhost', 4)
cl <- makeCluster(hosts)
streamplot(r2, cl=cl,
           par.settings=streamTheme(symbol=brewer.pal(n=5,
                                                      name='Reds')))
stopCluster(cl)

## Without parallel
streamplot(r3, parallel=FALSE,
           par.settings=streamTheme(symbol=brewer.pal(n=5,
                                                      name='Greens')))

## Configuration of droplets and streamlets
streamplot(s, layout=c(1, 3), droplet=list(pc=.2), streamlet=list(L=20),
           par.settings=streamTheme(cex=.6))

Run the code above in your browser using DataLab