You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.6 KiB
67 lines
1.6 KiB
"%||%" <- function(a, b) {
|
|
if (!is.null(a)) a else b
|
|
}
|
|
|
|
"%|W|%" <- function(a, b) {
|
|
if (!is.waive(a)) a else b
|
|
}
|
|
|
|
is.waive <- function(x) inherits(x, "waiver")
|
|
|
|
# Compute central angle between two points.
|
|
# Multiple by radius of sphere to get great circle distance
|
|
# @arguments longitude
|
|
# @arguments latitude
|
|
dist_central_angle <- function(lon, lat) {
|
|
# Convert to radians
|
|
lat <- lat * pi / 180
|
|
lon <- lon * pi / 180
|
|
|
|
hav <- function(x) sin(x / 2) ^ 2
|
|
ahav <- function(x) 2 * asin(x)
|
|
|
|
n <- length(lat)
|
|
ahav(sqrt(hav(diff(lat)) + cos(lat[-n]) * cos(lat[-1]) * hav(diff(lon))))
|
|
}
|
|
|
|
|
|
expand_default <- function(scale, discrete = c(0, 0.6), continuous = c(0.05, 0)) {
|
|
scale$expand %|W|% if (scale$is_discrete()) discrete else continuous
|
|
}
|
|
|
|
|
|
# Col union
|
|
# Form the union of columns in a and b. If there are columns of the same name in both a and b, take the column from a.
|
|
#
|
|
# @param data frame a
|
|
# @param data frame b
|
|
# @keyword internal
|
|
cunion <- function(a, b) {
|
|
if (length(a) == 0) return(b)
|
|
if (length(b) == 0) return(a)
|
|
|
|
cbind(a, b[setdiff(names(b), names(a))])
|
|
}
|
|
|
|
# Given a theme object and element name, return a grob for the element
|
|
element_render <- function(theme, element, ..., name = NULL) {
|
|
|
|
# Get the element from the theme, calculating inheritance
|
|
el <- calc_element(element, theme)
|
|
if (is.null(el)) {
|
|
message("Theme element ", element, " missing")
|
|
return(zeroGrob())
|
|
}
|
|
|
|
ggname(paste(element, name, sep = "."), element_grob(el, ...))
|
|
}
|
|
|
|
|
|
# Name ggplot grid object
|
|
# Convenience function to name grid objects
|
|
#
|
|
# @keyword internal
|
|
ggname <- function(prefix, grob) {
|
|
grob$name <- grobName(grob, prefix)
|
|
grob
|
|
}
|
|
|