Learn R Programming

terra (version 1.8-5)

inset: Make an inset map

Description

Make an inset map or scale the extent of a SpatVector

Usage

# S4 method for SpatVector
inset(x, e, loc="", scale=0.2, background="white", 
	perimeter=TRUE, box=NULL, pper, pbox, offset=0.1, add=TRUE, ...)

# S4 method for SpatRaster inset(x, e, loc="", scale=0.2, background="white", perimeter=TRUE, box=NULL, pper, pbox, offset=0.1, add=TRUE, ...)

# S4 method for SpatVector inext(x, e, y=NULL, gap=0)

Value

scaled and shifted SpatVector or SpatRaster (returned invisibly)

Arguments

x

SpatVector, SpatRaster

e

SpatExtent to set the size and location of the inset. Or missing

loc

character. One of "bottomright", "bottom", "bottomleft", "left", "topleft", "top", "topright", "right", "center"

scale

numeric. The relative size of the inset, used when x is missing

background

color for the background of the inset. Use NA for no background color

perimeter

logical. If TRUE a perimeter (border) is drawn around the inset

box

SpatExtent or missing, to draw a box on the inset, e.g. to show where the map is located in a larger area

pper

list with graphical parameters (arguments) such as col and lwd for the perimeter line

pbox

list with graphical parameters (arguments) such as col and lwd for the box (line)

offset

numeric. Value between 0.1 and 1 to indicate the relative distance between what is mapped and the bounding box

add

logical. Add the inset to the map?

...

additional arguments passed to plot for the drawing of x

y

SpatVector. If not NULL, y is scaled based with the parameters for x. This is useful, for example, when x represent boundaries, and y points within these boundaries

gap

numeric to add space between the SpatVector and the SpatExtent

See Also

sbar, rescale, shift

Examples

Run this code
f <- system.file("ex/lux.shp", package="terra")
v <- vect(f)
x <- v[v$NAME_2 == "Diekirch", ]

plot(x, density=10, col="blue")
inset(v)

# more elaborate
plot(x, density=10, col="blue")
inset(v, col = "brown", border="lightgrey", perimeter=TRUE, 
		pper=list(col="orange", lwd=3, lty=2), 
		box=ext(x), pbox=list(col="blue", lwd=2))

cols <- rep("light grey", 12)
cols[2] <- "red"
e <- ext(c(6.2, 6.3, 49.9, 50))
b <- ext(x)+0.02
inset(v, e=e, col=cols, box=b)

# with a SpatRaster
ff <- system.file("ex/elev.tif", package="terra")
r <- rast(ff)
r <- crop(r, ext(x) + .01)
plot(r, type="int", mar=c(2,2,2,2), plg=list(x="topright"))
lines(v, lwd=1.5)
lines(x, lwd=2.5)
inset(v, col=cols, loc="topleft", scale=0.15)

# a more complex one
plot(r, plg=list(title="meter\n", shrink=.2, cex=.8))
lines(v, lwd=4, col="white")
lines(v, lwd=1.5)
lines(x, lwd=2.5)
text(x, "NAME_2", cex=1.5, halo=TRUE)
sbar(6, c(6.04, 49.785), type="bar", below="km", label=c(0,3,6), cex=.8)
s <- inset(v, col=cols, box=b, scale=.2, loc="topright", background="light yellow",
	pbox=list(lwd=2, lty=5, col="blue"))

# note the returned inset SpatVector
s
lines(s, col="orange")

Run the code above in your browser using DataLab