plot stars object, with subplots for each level of first non-spatial dimension
Source:R/ncproxy.R
, R/plot.R
, R/proxy.R
plot.Rd
plot stars object, with subplots for each level of first non-spatial dimension, and customization of legend key
Usage
# S3 method for class 'nc_proxy'
plot(x, y, ..., downsample = get_downsample(dim(x)), max_times = 16)
# S3 method for class 'stars'
plot(
x,
y,
...,
join_zlim = TRUE,
main = make_label(x, 1),
axes = FALSE,
downsample = TRUE,
nbreaks = 11,
breaks = "quantile",
col = grey(1:(nbreaks - 1)/nbreaks),
key.pos = get_key_pos(x, ...),
key.width = kw_dflt(x, key.pos),
key.length = 0.618,
key.lab = ifelse(length(main) == 1, main, ""),
reset = TRUE,
box_col = NA,
center_time = FALSE,
hook = NULL,
mfrow = NULL,
compact = TRUE
)
# S3 method for class 'stars'
image(
x,
...,
band = 1,
attr = 1,
asp = NULL,
rgb = NULL,
maxColorValue = ifelse(inherits(rgb, "data.frame"), 255, max(x[[attr]], na.rm = TRUE)),
xlab = if (!axes) "" else names(d)[1],
ylab = if (!axes) "" else names(d)[2],
xlim = st_bbox(extent)$xlim,
ylim = st_bbox(extent)$ylim,
text_values = FALSE,
text_color = "black",
axes = FALSE,
interpolate = FALSE,
as_points = FALSE,
key.pos = NULL,
logz = FALSE,
key.width = kw_dflt(x, key.pos),
key.length = 0.618,
add.geom = NULL,
border = NA,
useRaster = isTRUE(dev.capabilities()$rasterImage == "yes"),
extent = x
)
# S3 method for class 'stars_proxy'
plot(x, y, ..., downsample = get_downsample(dim(x)))
Arguments
- x
object of class
stars
- y
ignored
- ...
further arguments: for
plot
, passed on toimage.stars
; forimage
, passed on toimage.default
orrasterImage
.- downsample
logical or numeric; if
TRUE
will try to plot not many more pixels than actually are visible, ifFALSE
, no downsampling takes place, if numeric, the number of pixels/lines/bands etc that will be skipped; see Details.- max_times
integer; maximum number of time steps to attempt to plot.
- join_zlim
logical; if
TRUE
, compute a single, joint zlim (color scale) for all subplots fromx
- main
character; subplot title prefix; use
""
to get only time, useNULL
to suppress subplot titles- axes
logical; should axes and box be added to the plot?
- nbreaks
number of color breaks; should be one more than number of colors. If missing and
col
is specified, it is derived from that.- breaks
numeric vector with actual color breaks, or a
style
name used in classIntervals.- col
colors to use for grid cells, or color palette function
- key.pos
numeric; side to plot a color key: 1 bottom, 2 left, 3 top, 4 right; set to
NULL
to omit key. Ignored if multiple columns are plotted in a single function call. Default depends on plot size, map aspect, and, if set, parameterasp
. If it has length 2, the second value, ranging from 0 to 1, determines where the key is placed in the available space (default: 0.5, center).- key.width
amount of space reserved for width of the key (labels); relative or absolute (using lcm)
- key.length
amount of space reserved for length of the key (labels); relative or absolute (using lcm)
- key.lab
character; label for color key in case of multiple subplots, use
""
to suppress- reset
logical; if
FALSE
, keep the plot in a mode that allows adding further map elements; ifTRUE
restore original mode after plotting- box_col
color for box around sub-plots; use
NA
to suppress plotting of boxes around sub-plots.- center_time
logical; if
TRUE
, sub-plot titles will show the center of time intervals, otherwise their start- hook
NULL or function; hook function that will be called on every sub-plot; see examples.
- mfrow
length-2 integer vector with nrows, ncolumns of a composite plot, to override the default layout
- compact
logical; place facets compactly (TRUE), or spread over the plotting device area?
- band
integer; which band (dimension) to plot
- attr
integer; which attribute to plot
- asp
numeric; aspect ratio of image
- rgb
integer; specify three bands to form an rgb composite. Experimental: rgb color table; see Details.
- maxColorValue
numeric; passed on to rgb
- xlab
character; x axis label
- ylab
character; y axis label
- xlim
x axis limits
- ylim
y axis limits
- text_values
logical; print values as text on image?
- text_color
character; color for printed text values
- interpolate
logical; when using rasterImage (rgb), should pixels be interpolated?
- as_points
logical; for curvilinear or sheared grids: parameter passed on to st_as_sf, determining whether raster cells will be plotted as symbols (fast, approximate) or small polygons (slow, exact)
- logz
logical; if
TRUE
, use log10-scale for the attribute variable. In that case,breaks
andat
need to be given as log10-values; see examples.- add.geom
object of class
sfc
, or list with arguments toplot
, that will be added to an image or sub-image- border
color used for cell borders (only in case
x
is a curvilinear or rotated/sheared grid)- useRaster
logical; use the rasterImage capabilities of the graphics device?
- extent
object which has a
st_bbox
method; sets the plotting extent
Details
when plotting a subsetted stars_proxy
object, the default value for argument downsample
will not be computed correctly, and has to be set manually.
Downsampling: a value for downsample
of 0: no downsampling, 1: after every dimension value (pixel/line/band), one value is skipped (half of the original resolution), 2: after every dimension value, 2 values are skipped (one third of the original resolution), etc. If downsample
is TRUE
or a length 1 numeric vector, downsampling is only applied to the raster [x] and [y] dimensions.
To remove unused classes in a categorical raster, use the droplevels function.
When bitmaps show visual artefacts (Moiré effects), make sure that device png is used rather than ragg::agg_png
as the latter uses antialiasing for filled polygons which causes this; see also https://github.com/r-spatial/stars/issues/573 .
use of an rgb color table is experimental; see https://github.com/r-spatial/mapview/issues/208
when plotting a subsetted stars_proxy
object, the default value for argument downsample
will not be computed correctly, and has to be set manually.
Examples
st_bbox(L7_ETMs) |> st_as_sfc() |> st_centroid() |> st_coordinates() -> pt
hook1 = function() {
text(pt[,"X"], pt[,"Y"], "foo", col = 'orange', cex = 2)
}
plot(L7_ETMs, hook = hook1)
x = st_set_dimensions(L7_ETMs, 3, paste0("B_", 1:6))
hook2 = function(..., row, col, nr, nrow, ncol, value, bbox) {
str = paste0("row ", row, "/", nrow, ", col ", col, "/", ncol, "\nnr: ", nr, " value: ", value)
bbox |> st_as_sfc() |> st_centroid() |> st_coordinates() -> pt
text(pt[,"X"], pt[,"Y"], str, col = 'red', cex = 2)
}
plot(x, hook = hook2, col = grey(c(.2,.25,.3,.35)))
if (isTRUE(dev.capabilities()$rasterImage == "yes")) {
lc = read_stars(system.file("tif/lc.tif", package = "stars"))
levels(lc[[1]]) = abbreviate(levels(lc[[1]]), 6) # so it's not only legend
plot(lc, key.pos=4)
}
tif = system.file("tif/L7_ETMs.tif", package = "stars")
x = read_stars(tif)
image(x, col = grey((3:9)/10))
if (isTRUE(dev.capabilities()$rasterImage == "yes")) {
image(x, rgb = c(1,3,5)) # false color composite
}