Learn R Programming

ursa (version 3.11.1)

panel_plot: Add graphical elements to the image panel

Description

Standard fuctions for plotting from package graphics are used for manual adding elements to current plot. Theses series of functions used that standard instruments with additional controling the acceptability of plotting.

Usage

panel_plot(obj,...)

panel_box(...) panel_lines(...) panel_points(...) panel_text(...) panel_abline(...) panel_polygon(...) panel_segments(...)

Value

For spatial objects (simple features from sf or spatial abstract classes from sp) function panel_plot returns object of class ursaLegend. It is a list with items, which can be used to as arguments of legend(). This is intermediate step for experimental feature (not ready) to display colorbars on plot panel. For other objects function panel_plot returns value of function plot.

Function panel_box returns value of function box.

Function panel_lines returns value of function lines.

Function panel_points returns value of function points.

Function panel_text returns value of function text.

Function panel_abline returns value of function abline.

Function panel_polygon returns value of function polygon.

Function panel_segments returns value of function segments.

Arguments

obj

R object.

...

In panel_plot arguments are passed to function plot.
In panel_box arguments are passed to function box.
In panel_lines arguments are passed to function lines.
In panel_points arguments are passed to function points.
In panel_text arguments are passed to function text.
In panel_abline arguments are passed to function abline.
In panel_polygon arguments are passed to function polygon.
In panel_segments arguments are passed to function segments.

Author

Nikita Platonov platonov@sevin.ru

Details

If unable to get value TRUE from getOption("ursaPngPlot") then plotting is disable, and any function from this series returns NULL.

Generally, for spatial objects argument add=TRUE is used in panel_plot.

See Also

panel_contour

Package graphics (help(package="graphics")) and functions plot, box, lines, points, text, abline, polygon, segments.

Examples

Run this code
session_grid(NULL)
# require(rgdal) ## 'rgdal' is retired
a <- pixelsize()
g1 <- session_grid()
n <- 12L
k <- 5L
x <- with(g1,runif(n,min=minx,max=maxx))
y <- with(g1,runif(n,min=miny,max=maxy))
panel_plot(x,y) ## plots nothing, because 'compose_open(...,dev=F)' is not called yet
shpname <- tempfile(fileext=".shp")
layername <- gsub("\\.shp$","",basename(shpname))
if (requireNamespace("sp")) {
   sl <- lapply(seq(k),function(id){
      x <- sort(with(g1,runif(n,min=minx,max=maxx)))
      y <- sort(with(g1,runif(n,min=miny,max=maxy)))
      sp::Lines(sp::Line(cbind(x,y)),ID=id)
   })
   sl <- sp::SpatialLines(sl,proj4string=sp::CRS(ursa_proj(g1)))#,id=length(sl))
   lab <- t(sapply(sp::coordinates(sl),function(xy) xy[[1]][round(n/2),]))
   lab <- as.data.frame(cbind(lab,z=seq(k)))
   sl <- sp::SpatialLinesDataFrame(sl
                 ,data=data.frame(ID=runif(k,min=5,max=9),desc=LETTERS[seq(k)]))
   print(sl@data)
   ct <- colorize(sl@data$ID)#,name=sldf@data$desc)
   try(writeOGR(sl,dirname(shpname),layername,driver="ESRI Shapefile")) ## 'rgdal' is retired
   spatial_write(sl,shpname)
} else if (requireNamespace("sf")) {
   sl <- lapply(seq(k),function(id) {
      x <- sort(with(g1,runif(n,min=minx,max=maxx)))
      y <- sort(with(g1,runif(n,min=miny,max=maxy)))
      sf::st_linestring(cbind(x,y))
   })
   sl <- sf::st_sfc(sl,crs=as.character(ursa_crs(g1)))
   sl <- sf::st_sf(ID=runif(k,min=5,max=9),desc=LETTERS[seq(k)],geometry=sl)
   print(spatial_data(sl))
   lab <- do.call("rbind",lapply(sf::st_geometry(sl),colMeans))
   lab <- as.data.frame(cbind(lab,z=seq(k)))
   ct <- colorize(sl$ID)
   sf::st_write(sl,shpname)
}
compose_open(layout=c(1,2),legend=list(list("bottom",2)))
panel_new()
panel_decor()
panel_lines(x,y,col="orange")
panel_points(x,y,cex=5,pch=21,col="transparent",bg="#00FF005F")
panel_points(0,0,pch=3)
panel_text(0,0,"North\nPole",pos=4,cex=1.5,family="Courier New",font=3)
panel_new()
panel_decor()
if (exists("sl"))
   panel_plot(sl,lwd=4,col="grey20")
if ((exists("ct"))&&(file.exists(shpname)))
   panel_plot(shpname,lwd=3,col=ct$colortable[ct$index])
if (exists("lab"))
   panel_points(lab$x,lab$y,pch=as.character(lab$z),cex=2)
if (exists("ct"))
   compose_legend(ct$colortable)
compose_close()
file.remove(dir(path=dirname(shpname)
               ,pattern=paste0(layername,"\\.(cpg|dbf|prj|shp|shx)")
               ,full.names=TRUE))

Run the code above in your browser using DataLab