| panel_plot | R Documentation |
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.
panel_plot(obj,...)
panel_box(...)
panel_lines(...)
panel_points(...)
panel_text(...)
panel_abline(...)
panel_polygon(...)
panel_segments(...)
obj |
R object. |
... |
In |
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.
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.
For plotted elements it is possible to create legend for colors using color bars. No shapes kind and size, no line widths.
To convert object x of class ursaLegend to object of class ursaColorTable please use ursa_colortable(x).
Nikita Platonov platonov@sevin.ru
panel_contour
Package graphics (help(package="graphics")) and functions plot, box, lines, points, text, abline, polygon, segments.
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))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.