Fix ggplot2 imports and polish utility functions for publication
R-CMD-check / R CMD check (push) Failing after 4m35s
R-CMD-check / R CMD check (push) Failing after 4m35s
Blocking issue #1: Replace all ggplot2::function() calls with bare references in R/colors.R, R/logo.R, R/theme.R. The package already has import(ggplot2) in NAMESPACE which makes these available directly; the :: prefixes were triggering R CMD check 'undefined global function' NOTEs for ~30+ unimported symbols (element_line, element_rect, theme_grey, margin, rel, unit, discrete_scale, etc.). Suggestion #6: Replace class(x) == "character" with "character" %in% class(x) in R/db.R (countCleanr and simpleCap). The == pattern breaks on S3 objects with multiple class attributes. Suggestion #7: Vectorise simpleCap() to handle multi-element input correctly. Previously strsplit(x, ' ')[[1]] only processed the first element; now uses vapply() to capitalise each vector element independently. Suggestion #9: Convert match_test() from raw cat() calls to structured writeLines() output with proper formatting and spacing between sections.
This commit is contained in:
+7
-7
@@ -199,7 +199,7 @@ civilytics_palette <- function(name = "qual", n = NULL, reverse = FALSE) {
|
|||||||
#' Civilytics palette function (closure)
|
#' Civilytics palette function (closure)
|
||||||
#'
|
#'
|
||||||
#' Returns a closure `function(n)` suitable for passing to
|
#' Returns a closure `function(n)` suitable for passing to
|
||||||
#' [ggplot2::discrete_scale()] or similar scale constructors.
|
#' [discrete_scale()] or similar scale constructors.
|
||||||
#'
|
#'
|
||||||
#' @param name Character. Palette name. See `names(civilytics_palettes)`.
|
#' @param name Character. Palette name. See `names(civilytics_palettes)`.
|
||||||
#' @param reverse Logical. Reverse the palette order. Default `FALSE`.
|
#' @param reverse Logical. Reverse the palette order. Default `FALSE`.
|
||||||
@@ -221,7 +221,7 @@ civilytics_pal <- function(name = "qual", reverse = FALSE) {
|
|||||||
#'
|
#'
|
||||||
#' @param palette Character. Palette name. Defaults to `"qual"`.
|
#' @param palette Character. Palette name. Defaults to `"qual"`.
|
||||||
#' @param discrete Logical. `TRUE` (default) for categorical data; `FALSE`
|
#' @param discrete Logical. `TRUE` (default) for categorical data; `FALSE`
|
||||||
#' for a continuous gradient via [ggplot2::scale_color_gradientn()].
|
#' for a continuous gradient via [scale_color_gradientn()].
|
||||||
#' @param reverse Logical. Reverse the palette order. Default `FALSE`.
|
#' @param reverse Logical. Reverse the palette order. Default `FALSE`.
|
||||||
#' @param ... Additional arguments passed to the ggplot2 scale function.
|
#' @param ... Additional arguments passed to the ggplot2 scale function.
|
||||||
#'
|
#'
|
||||||
@@ -240,14 +240,14 @@ civilytics_pal <- function(name = "qual", reverse = FALSE) {
|
|||||||
scale_color_civilytics <- function(palette = "qual", discrete = TRUE,
|
scale_color_civilytics <- function(palette = "qual", discrete = TRUE,
|
||||||
reverse = FALSE, ...) {
|
reverse = FALSE, ...) {
|
||||||
if (discrete) {
|
if (discrete) {
|
||||||
ggplot2::discrete_scale(
|
discrete_scale(
|
||||||
"colour",
|
"colour",
|
||||||
palette = civilytics_pal(palette, reverse = reverse),
|
palette = civilytics_pal(palette, reverse = reverse),
|
||||||
...
|
...
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
pal <- civilytics_palette(palette, reverse = reverse)
|
pal <- civilytics_palette(palette, reverse = reverse)
|
||||||
ggplot2::scale_color_gradientn(
|
scale_color_gradientn(
|
||||||
colours = grDevices::colorRampPalette(pal)(256),
|
colours = grDevices::colorRampPalette(pal)(256),
|
||||||
...
|
...
|
||||||
)
|
)
|
||||||
@@ -261,7 +261,7 @@ scale_color_civilytics <- function(palette = "qual", discrete = TRUE,
|
|||||||
#'
|
#'
|
||||||
#' @param palette Character. Palette name. Defaults to `"qual"`.
|
#' @param palette Character. Palette name. Defaults to `"qual"`.
|
||||||
#' @param discrete Logical. `TRUE` (default) for categorical data; `FALSE`
|
#' @param discrete Logical. `TRUE` (default) for categorical data; `FALSE`
|
||||||
#' for a continuous gradient via [ggplot2::scale_fill_gradientn()].
|
#' for a continuous gradient via [scale_fill_gradientn()].
|
||||||
#' @param reverse Logical. Reverse the palette order. Default `FALSE`.
|
#' @param reverse Logical. Reverse the palette order. Default `FALSE`.
|
||||||
#' @param ... Additional arguments passed to the ggplot2 scale function.
|
#' @param ... Additional arguments passed to the ggplot2 scale function.
|
||||||
#'
|
#'
|
||||||
@@ -280,14 +280,14 @@ scale_color_civilytics <- function(palette = "qual", discrete = TRUE,
|
|||||||
scale_fill_civilytics <- function(palette = "qual", discrete = TRUE,
|
scale_fill_civilytics <- function(palette = "qual", discrete = TRUE,
|
||||||
reverse = FALSE, ...) {
|
reverse = FALSE, ...) {
|
||||||
if (discrete) {
|
if (discrete) {
|
||||||
ggplot2::discrete_scale(
|
discrete_scale(
|
||||||
"fill",
|
"fill",
|
||||||
palette = civilytics_pal(palette, reverse = reverse),
|
palette = civilytics_pal(palette, reverse = reverse),
|
||||||
...
|
...
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
pal <- civilytics_palette(palette, reverse = reverse)
|
pal <- civilytics_palette(palette, reverse = reverse)
|
||||||
ggplot2::scale_fill_gradientn(
|
scale_fill_gradientn(
|
||||||
colours = grDevices::colorRampPalette(pal)(256),
|
colours = grDevices::colorRampPalette(pal)(256),
|
||||||
...
|
...
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
#' @return a numeric column of data
|
#' @return a numeric column of data
|
||||||
#' @export
|
#' @export
|
||||||
countCleanr <- function(x){
|
countCleanr <- function(x){
|
||||||
if(class(x) == "character"){
|
if ("character" %in% class(x)) {
|
||||||
x[x == "None not reported"] <- "0"
|
x[x == "None not reported"] <- "0"
|
||||||
x[x == "Not applicable"] <- NA
|
x[x == "Not applicable"] <- NA
|
||||||
x <- as.numeric(x)
|
x <- as.numeric(x)
|
||||||
@@ -110,8 +110,12 @@ nvals <- function(x){
|
|||||||
#' my_string <- c("Happy school", "Easy school", "cool School", "big school")
|
#' my_string <- c("Happy school", "Easy school", "cool School", "big school")
|
||||||
#' simpleCap(my_string)
|
#' simpleCap(my_string)
|
||||||
simpleCap <- function(x) {
|
simpleCap <- function(x) {
|
||||||
stopifnot(class(x) == "character")
|
stopifnot("character" %in% class(x))
|
||||||
s <- strsplit(x, " ")[[1]]
|
|
||||||
|
# Vectorised over elements of x — each element is capitalised independently.
|
||||||
|
vapply(x, function(word) {
|
||||||
|
s <- strsplit(word, " ")[[1]]
|
||||||
paste(toupper(substring(s, 1, 1)), substring(s, 2),
|
paste(toupper(substring(s, 1, 1)), substring(s, 2),
|
||||||
sep = "", collapse = " ")
|
sep = "", collapse = " ")
|
||||||
|
}, character(1))
|
||||||
}
|
}
|
||||||
|
|||||||
+26
-22
@@ -1,11 +1,14 @@
|
|||||||
# Join utilities
|
# Join utilities
|
||||||
|
|
||||||
#' Test the join between two sets of identifiers
|
#' Test the join between two sets of identifiers
|
||||||
#'
|
#'
|
||||||
#' @param x a vector of identifiers to check against y
|
#' @param x A vector of identifiers to check against `y`.
|
||||||
#' @param y a vector of identifiers to check against x
|
#' @param y A vector of identifiers to look for a match in.
|
||||||
#' @param distinct logical, should duplicate values of x and y be removed before testing
|
#' @param distinct Logical. Should duplicate values of `x` and `y` be removed
|
||||||
|
#' before testing? Default is `TRUE`.
|
||||||
#'
|
#'
|
||||||
#' @return nothing, print a summary of match statistics to the console
|
#' @return Invisibly returns `NULL`; prints a formatted summary of match
|
||||||
|
#' statistics to the console via [writeLines()].
|
||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
#' @examples
|
#' @examples
|
||||||
@@ -16,33 +19,34 @@ match_test <- function(x, y, distinct = TRUE) {
|
|||||||
if (distinct) {
|
if (distinct) {
|
||||||
x <- unique(x)
|
x <- unique(x)
|
||||||
y <- unique(y)
|
y <- unique(y)
|
||||||
cat("**** Distinct Matches ****")
|
|
||||||
cat("\n")
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: DO not report 100% if there is even 1 mismatch
|
# TODO: DO not report 100% if there is even 1 mismatch
|
||||||
|
|
||||||
xiny <- sum(x %in% y)
|
xiny <- sum(x %in% y)
|
||||||
total_x <- length(x)
|
total_x <- length(x)
|
||||||
|
pct_x <- round(100 * xiny / total_x, 2)
|
||||||
|
|
||||||
yinx <- sum(y %in% x)
|
yinx <- sum(y %in% x)
|
||||||
total_y <- length(y)
|
total_y <- length(y)
|
||||||
|
pct_y <- round(100 * yinx / total_y, 2)
|
||||||
|
|
||||||
cat("**** Match Summary ****")
|
header <- if (distinct) "Distinct Matches" else "All Values"
|
||||||
cat("\n")
|
|
||||||
cat("X in Y")
|
|
||||||
cat("\n")
|
|
||||||
cat(paste0("Of the ", total_x, " X values, ", xiny, " (",
|
|
||||||
100*round(xiny/total_x, 2), "%) were matched."))
|
|
||||||
cat("\n")
|
|
||||||
cat("********************************************")
|
|
||||||
cat("\n")
|
|
||||||
cat("Y in X")
|
|
||||||
cat("\n")
|
|
||||||
cat(paste0("Of the ", total_y, " Y values, ", yinx, " (",
|
|
||||||
100*round(yinx/total_y, 2), "%) were matched."))
|
|
||||||
cat("\n")
|
|
||||||
cat("******************************************")
|
|
||||||
|
|
||||||
|
lines <- c(
|
||||||
|
paste0("**** ", header, " ****"),
|
||||||
|
"",
|
||||||
|
"X in Y",
|
||||||
|
sprintf("Of the %d X values, %d (%s%%) were matched.",
|
||||||
|
total_x, xiny, format(pct_x, nsmall = 2)),
|
||||||
|
strrep("*", 40),
|
||||||
|
"",
|
||||||
|
"Y in X",
|
||||||
|
sprintf("Of the %d Y values, %d (%s%%) were matched.",
|
||||||
|
total_y, yinx, format(pct_y, nsmall = 2)),
|
||||||
|
strrep("*", 38)
|
||||||
|
)
|
||||||
|
|
||||||
|
writeLines(lines)
|
||||||
|
invisible(NULL)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,8 +75,8 @@ add_logo <- function(plot, logo, margin_param = NULL, font_scale = 1.1,
|
|||||||
# element cascades to titles, axis labels, legends, captions, and strips.
|
# element cascades to titles, axis labels, legends, captions, and strips.
|
||||||
if (!is.null(font_scale) && font_scale != 1) {
|
if (!is.null(font_scale) && font_scale != 1) {
|
||||||
base_size <- plot$theme$text$size %||% 14
|
base_size <- plot$theme$text$size %||% 14
|
||||||
plot <- plot + ggplot2::theme(
|
plot <- plot + theme(
|
||||||
text = ggplot2::element_text(size = base_size * font_scale)
|
text = element_text(size = base_size * font_scale)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ add_logo <- function(plot, logo, margin_param = NULL, font_scale = 1.1,
|
|||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
#' @examples
|
#' @examples
|
||||||
#' p1 <- ggplot2::ggplot(mtcars, ggplot2::aes(mpg, wt)) + ggplot2::geom_point()
|
#' p1 <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
|
||||||
#' measure_caption(p1) # Should equal 1 since no caption is present
|
#' measure_caption(p1) # Should equal 1 since no caption is present
|
||||||
measure_caption <- function(gg) {
|
measure_caption <- function(gg) {
|
||||||
if (has_caption(gg)) {
|
if (has_caption(gg)) {
|
||||||
@@ -146,7 +146,7 @@ measure_caption <- function(gg) {
|
|||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
#' @examples
|
#' @examples
|
||||||
#' p1 <- ggplot2::ggplot(mtcars, ggplot2::aes(mpg, wt)) + ggplot2::geom_point()
|
#' p1 <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
|
||||||
#' has_caption(p1) # FALSE
|
#' has_caption(p1) # FALSE
|
||||||
has_caption <- function(gg) {
|
has_caption <- function(gg) {
|
||||||
any(names(gg$labels) == "caption")
|
any(names(gg$labels) == "caption")
|
||||||
@@ -187,8 +187,8 @@ add_logo_ga <- function(plot_list, logo, nrow = 1, widths = NULL,
|
|||||||
if (!is.null(font_scale) && font_scale != 1) {
|
if (!is.null(font_scale) && font_scale != 1) {
|
||||||
plot_list <- lapply(plot_list, function(p) {
|
plot_list <- lapply(plot_list, function(p) {
|
||||||
base_size <- p$theme$text$size %||% 14
|
base_size <- p$theme$text$size %||% 14
|
||||||
p + ggplot2::theme(
|
p + theme(
|
||||||
text = ggplot2::element_text(size = base_size * font_scale)
|
text = element_text(size = base_size * font_scale)
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -276,9 +276,9 @@ make_logo_grob <- function(type = c("wordmark", "mark"),
|
|||||||
xmax <- 1
|
xmax <- 1
|
||||||
}
|
}
|
||||||
|
|
||||||
ggplot2::ggplot() +
|
ggplot() +
|
||||||
ggplot2::theme_void() +
|
theme_void() +
|
||||||
ggplot2::annotation_custom(
|
annotation_custom(
|
||||||
get_png(system.file("img", img_file, package = "civilytics")),
|
get_png(system.file("img", img_file, package = "civilytics")),
|
||||||
xmin = xmin, xmax = xmax
|
xmin = xmin, xmax = xmax
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#' Civilytics ggplot2 theme
|
#' Civilytics ggplot2 theme
|
||||||
#'
|
#'
|
||||||
#' A complete ggplot2 theme built on [ggplot2::theme_grey()] using the
|
#' A complete ggplot2 theme built on [theme_grey()] using the
|
||||||
#' Civilytics brand color palette and typography. Requires ggplot2 >= 4.0.0
|
#' Civilytics brand color palette and typography. Requires ggplot2 >= 4.0.0
|
||||||
#' for the `ink`, `paper`, and `accent` base-theme parameters.
|
#' for the `ink`, `paper`, and `accent` base-theme parameters.
|
||||||
#'
|
#'
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
#' logo below the plot, pass `font_scale` to compensate for viewport
|
#' logo below the plot, pass `font_scale` to compensate for viewport
|
||||||
#' shrinkage.
|
#' shrinkage.
|
||||||
#'
|
#'
|
||||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
#' @return A complete ggplot2 [theme()] object.
|
||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
#' @examples
|
#' @examples
|
||||||
@@ -115,30 +115,30 @@ theme_civilytics <- function(
|
|||||||
bg_color <- if (isTRUE(paper_bg)) paper else NA
|
bg_color <- if (isTRUE(paper_bg)) paper else NA
|
||||||
|
|
||||||
# Grid line elements
|
# Grid line elements
|
||||||
grid_line <- ggplot2::element_line(color = rule_color, linewidth = 0.35)
|
grid_line <- element_line(color = rule_color, linewidth = 0.35)
|
||||||
no_line <- ggplot2::element_blank()
|
no_line <- element_blank()
|
||||||
|
|
||||||
ggplot2::theme_grey(
|
theme_grey(
|
||||||
base_size = font_size,
|
base_size = font_size,
|
||||||
base_family = font_family,
|
base_family = font_family,
|
||||||
ink = ink,
|
ink = ink,
|
||||||
paper = paper,
|
paper = paper,
|
||||||
accent = accent
|
accent = accent
|
||||||
) %+replace%
|
) %+replace%
|
||||||
ggplot2::theme(
|
theme(
|
||||||
line = ggplot2::element_line(
|
line = element_line(
|
||||||
color = ink,
|
color = ink,
|
||||||
linewidth = line_size,
|
linewidth = line_size,
|
||||||
linetype = 1,
|
linetype = 1,
|
||||||
lineend = "butt"
|
lineend = "butt"
|
||||||
),
|
),
|
||||||
rect = ggplot2::element_rect(
|
rect = element_rect(
|
||||||
fill = NA,
|
fill = NA,
|
||||||
color = NA,
|
color = NA,
|
||||||
linewidth = line_size,
|
linewidth = line_size,
|
||||||
linetype = 1
|
linetype = 1
|
||||||
),
|
),
|
||||||
text = ggplot2::element_text(
|
text = element_text(
|
||||||
family = font_family,
|
family = font_family,
|
||||||
face = "plain",
|
face = "plain",
|
||||||
color = ink,
|
color = ink,
|
||||||
@@ -147,161 +147,161 @@ theme_civilytics <- function(
|
|||||||
vjust = 0.5,
|
vjust = 0.5,
|
||||||
angle = 0,
|
angle = 0,
|
||||||
lineheight = 0.9,
|
lineheight = 0.9,
|
||||||
margin = ggplot2::margin(),
|
margin = margin(),
|
||||||
debug = FALSE
|
debug = FALSE
|
||||||
),
|
),
|
||||||
# -- Axes --
|
# -- Axes --
|
||||||
axis.line = ggplot2::element_blank(),
|
axis.line = element_blank(),
|
||||||
axis.line.x = ggplot2::element_line(
|
axis.line.x = element_line(
|
||||||
color = ink,
|
color = ink,
|
||||||
linewidth = 0.6,
|
linewidth = 0.6,
|
||||||
lineend = "square"
|
lineend = "square"
|
||||||
),
|
),
|
||||||
axis.line.y = ggplot2::element_blank(),
|
axis.line.y = element_blank(),
|
||||||
axis.text = ggplot2::element_text(
|
axis.text = element_text(
|
||||||
color = ink_2,
|
color = ink_2,
|
||||||
size = ggplot2::rel(rel_small)
|
size = rel(rel_small)
|
||||||
),
|
),
|
||||||
axis.text.x = ggplot2::element_text(
|
axis.text.x = element_text(
|
||||||
margin = ggplot2::margin(t = small_size / 4),
|
margin = margin(t = small_size / 4),
|
||||||
vjust = 1
|
vjust = 1
|
||||||
),
|
),
|
||||||
axis.text.x.top = ggplot2::element_text(
|
axis.text.x.top = element_text(
|
||||||
margin = ggplot2::margin(b = small_size / 4),
|
margin = margin(b = small_size / 4),
|
||||||
vjust = 0
|
vjust = 0
|
||||||
),
|
),
|
||||||
axis.text.y = ggplot2::element_text(
|
axis.text.y = element_text(
|
||||||
margin = ggplot2::margin(r = small_size / 4),
|
margin = margin(r = small_size / 4),
|
||||||
hjust = 1
|
hjust = 1
|
||||||
),
|
),
|
||||||
axis.text.y.right = ggplot2::element_text(
|
axis.text.y.right = element_text(
|
||||||
margin = ggplot2::margin(l = small_size / 4),
|
margin = margin(l = small_size / 4),
|
||||||
hjust = 0
|
hjust = 0
|
||||||
),
|
),
|
||||||
axis.ticks = ggplot2::element_line(
|
axis.ticks = element_line(
|
||||||
color = ink_3,
|
color = ink_3,
|
||||||
linewidth = 0.4
|
linewidth = 0.4
|
||||||
),
|
),
|
||||||
axis.ticks.length = ggplot2::unit(4, "pt"),
|
axis.ticks.length = unit(4, "pt"),
|
||||||
axis.title.x = ggplot2::element_text(
|
axis.title.x = element_text(
|
||||||
size = ggplot2::rel(rel_small),
|
size = rel(rel_small),
|
||||||
color = ink_3,
|
color = ink_3,
|
||||||
margin = ggplot2::margin(t = 10),
|
margin = margin(t = 10),
|
||||||
vjust = 1
|
vjust = 1
|
||||||
),
|
),
|
||||||
axis.title.x.top = ggplot2::element_text(
|
axis.title.x.top = element_text(
|
||||||
size = ggplot2::rel(rel_small),
|
size = rel(rel_small),
|
||||||
color = ink_3,
|
color = ink_3,
|
||||||
margin = ggplot2::margin(b = half_line / 2),
|
margin = margin(b = half_line / 2),
|
||||||
vjust = 0
|
vjust = 0
|
||||||
),
|
),
|
||||||
axis.title.y = ggplot2::element_text(
|
axis.title.y = element_text(
|
||||||
size = ggplot2::rel(rel_small),
|
size = rel(rel_small),
|
||||||
color = ink_3,
|
color = ink_3,
|
||||||
angle = 90,
|
angle = 90,
|
||||||
margin = ggplot2::margin(r = 10),
|
margin = margin(r = 10),
|
||||||
vjust = 1
|
vjust = 1
|
||||||
),
|
),
|
||||||
axis.title.y.right = ggplot2::element_text(
|
axis.title.y.right = element_text(
|
||||||
size = ggplot2::rel(rel_small),
|
size = rel(rel_small),
|
||||||
color = ink_3,
|
color = ink_3,
|
||||||
angle = -90,
|
angle = -90,
|
||||||
margin = ggplot2::margin(l = half_line / 2),
|
margin = margin(l = half_line / 2),
|
||||||
vjust = 0
|
vjust = 0
|
||||||
),
|
),
|
||||||
# -- Legend --
|
# -- Legend --
|
||||||
legend.background = ggplot2::element_blank(),
|
legend.background = element_blank(),
|
||||||
legend.spacing = ggplot2::unit(font_size, "pt"),
|
legend.spacing = unit(font_size, "pt"),
|
||||||
legend.spacing.x = NULL,
|
legend.spacing.x = NULL,
|
||||||
legend.spacing.y = NULL,
|
legend.spacing.y = NULL,
|
||||||
legend.margin = ggplot2::margin(0, 0, 4, 0),
|
legend.margin = margin(0, 0, 4, 0),
|
||||||
legend.key = ggplot2::element_blank(),
|
legend.key = element_blank(),
|
||||||
legend.key.size = ggplot2::unit(12, "pt"),
|
legend.key.size = unit(12, "pt"),
|
||||||
legend.key.height = NULL,
|
legend.key.height = NULL,
|
||||||
legend.key.width = NULL,
|
legend.key.width = NULL,
|
||||||
legend.text = ggplot2::element_text(
|
legend.text = element_text(
|
||||||
size = ggplot2::rel(rel_small),
|
size = rel(rel_small),
|
||||||
color = ink_2
|
color = ink_2
|
||||||
),
|
),
|
||||||
legend.title = ggplot2::element_text(
|
legend.title = element_text(
|
||||||
hjust = 0,
|
hjust = 0,
|
||||||
face = "bold",
|
face = "bold",
|
||||||
size = ggplot2::rel(rel_tiny),
|
size = rel(rel_tiny),
|
||||||
color = ink_3
|
color = ink_3
|
||||||
),
|
),
|
||||||
legend.position = "top",
|
legend.position = "top",
|
||||||
legend.direction = NULL,
|
legend.direction = NULL,
|
||||||
legend.justification = c("left", "center"),
|
legend.justification = c("left", "center"),
|
||||||
legend.box = NULL,
|
legend.box = NULL,
|
||||||
legend.box.margin = ggplot2::margin(0, 0, 0, 0),
|
legend.box.margin = margin(0, 0, 0, 0),
|
||||||
legend.box.background = ggplot2::element_blank(),
|
legend.box.background = element_blank(),
|
||||||
legend.box.spacing = ggplot2::unit(font_size, "pt"),
|
legend.box.spacing = unit(font_size, "pt"),
|
||||||
# -- Panel --
|
# -- Panel --
|
||||||
panel.background = ggplot2::element_rect(fill = bg_color, color = NA),
|
panel.background = element_rect(fill = bg_color, color = NA),
|
||||||
panel.border = ggplot2::element_blank(),
|
panel.border = element_blank(),
|
||||||
panel.grid.minor = ggplot2::element_blank(),
|
panel.grid.minor = element_blank(),
|
||||||
panel.grid.major.x = if (grid %in% c("x", "both")) grid_line else no_line,
|
panel.grid.major.x = if (grid %in% c("x", "both")) grid_line else no_line,
|
||||||
panel.grid.major.y = if (grid %in% c("y", "both")) grid_line else no_line,
|
panel.grid.major.y = if (grid %in% c("y", "both")) grid_line else no_line,
|
||||||
panel.spacing = ggplot2::unit(16, "pt"),
|
panel.spacing = unit(16, "pt"),
|
||||||
panel.spacing.x = NULL,
|
panel.spacing.x = NULL,
|
||||||
panel.spacing.y = NULL,
|
panel.spacing.y = NULL,
|
||||||
panel.ontop = FALSE,
|
panel.ontop = FALSE,
|
||||||
# -- Facet strips --
|
# -- Facet strips --
|
||||||
strip.background = ggplot2::element_rect(fill = strip_color, color = NA),
|
strip.background = element_rect(fill = strip_color, color = NA),
|
||||||
strip.text = ggplot2::element_text(
|
strip.text = element_text(
|
||||||
family = font_family,
|
family = font_family,
|
||||||
face = "bold",
|
face = "bold",
|
||||||
size = ggplot2::rel(rel_small),
|
size = rel(rel_small),
|
||||||
color = ink,
|
color = ink,
|
||||||
margin = ggplot2::margin(
|
margin = margin(
|
||||||
half_line / 2, half_line / 2,
|
half_line / 2, half_line / 2,
|
||||||
half_line / 2, half_line / 2
|
half_line / 2, half_line / 2
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
strip.text.x = NULL,
|
strip.text.x = NULL,
|
||||||
strip.text.y = ggplot2::element_text(angle = -90),
|
strip.text.y = element_text(angle = -90),
|
||||||
strip.placement = "inside",
|
strip.placement = "inside",
|
||||||
strip.placement.x = NULL,
|
strip.placement.x = NULL,
|
||||||
strip.placement.y = NULL,
|
strip.placement.y = NULL,
|
||||||
strip.switch.pad.grid = ggplot2::unit(half_line / 2, "pt"),
|
strip.switch.pad.grid = unit(half_line / 2, "pt"),
|
||||||
strip.switch.pad.wrap = ggplot2::unit(half_line / 2, "pt"),
|
strip.switch.pad.wrap = unit(half_line / 2, "pt"),
|
||||||
# -- Plot-level --
|
# -- Plot-level --
|
||||||
plot.background = ggplot2::element_rect(fill = bg_color, color = NA),
|
plot.background = element_rect(fill = bg_color, color = NA),
|
||||||
plot.title = ggplot2::element_text(
|
plot.title = element_text(
|
||||||
family = title_family,
|
family = title_family,
|
||||||
face = "bold",
|
face = "bold",
|
||||||
size = ggplot2::rel(rel_large),
|
size = rel(rel_large),
|
||||||
hjust = 0,
|
hjust = 0,
|
||||||
vjust = 1,
|
vjust = 1,
|
||||||
margin = ggplot2::margin(b = 4)
|
margin = margin(b = 4)
|
||||||
),
|
),
|
||||||
plot.title.position = "plot",
|
plot.title.position = "plot",
|
||||||
plot.subtitle = ggplot2::element_text(
|
plot.subtitle = element_text(
|
||||||
size = ggplot2::rel(1),
|
size = rel(1),
|
||||||
color = ink_2,
|
color = ink_2,
|
||||||
hjust = 0,
|
hjust = 0,
|
||||||
vjust = 1,
|
vjust = 1,
|
||||||
lineheight = 1.3,
|
lineheight = 1.3,
|
||||||
margin = ggplot2::margin(b = 14)
|
margin = margin(b = 14)
|
||||||
),
|
),
|
||||||
plot.caption = ggplot2::element_text(
|
plot.caption = element_text(
|
||||||
size = ggplot2::rel(rel_tiny),
|
size = rel(rel_tiny),
|
||||||
color = ink_3,
|
color = ink_3,
|
||||||
hjust = 0,
|
hjust = 0,
|
||||||
vjust = 1,
|
vjust = 1,
|
||||||
lineheight = 1.3,
|
lineheight = 1.3,
|
||||||
margin = ggplot2::margin(t = 14)
|
margin = margin(t = 14)
|
||||||
),
|
),
|
||||||
plot.caption.position = "plot",
|
plot.caption.position = "plot",
|
||||||
plot.tag = ggplot2::element_text(
|
plot.tag = element_text(
|
||||||
face = "bold",
|
face = "bold",
|
||||||
color = accent,
|
color = accent,
|
||||||
size = ggplot2::rel(rel_tiny),
|
size = rel(rel_tiny),
|
||||||
hjust = 0,
|
hjust = 0,
|
||||||
vjust = 0.7
|
vjust = 0.7
|
||||||
),
|
),
|
||||||
plot.tag.position = c(0, 1),
|
plot.tag.position = c(0, 1),
|
||||||
plot.margin = ggplot2::margin(16, 18, 16, 16),
|
plot.margin = margin(16, 18, 16, 16),
|
||||||
complete = TRUE
|
complete = TRUE
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -317,7 +317,7 @@ theme_civilytics <- function(
|
|||||||
#'
|
#'
|
||||||
#' @inheritParams theme_civilytics
|
#' @inheritParams theme_civilytics
|
||||||
#'
|
#'
|
||||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
#' @return A complete ggplot2 [theme()] object.
|
||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
#' @examples
|
#' @examples
|
||||||
@@ -361,20 +361,20 @@ theme_civilytics_dark <- function(
|
|||||||
# The base theme hardcodes ink_2/ink_3 for subtitle/caption, which are
|
# The base theme hardcodes ink_2/ink_3 for subtitle/caption, which are
|
||||||
# dark colors meant for light backgrounds. Override with lighter values
|
# dark colors meant for light backgrounds. Override with lighter values
|
||||||
# so text remains readable on the navy background.
|
# so text remains readable on the navy background.
|
||||||
ggplot2::theme(
|
theme(
|
||||||
plot.subtitle = ggplot2::element_text(
|
plot.subtitle = element_text(
|
||||||
color = unname(civilytics_colors["navy_200"])
|
color = unname(civilytics_colors["navy_200"])
|
||||||
),
|
),
|
||||||
plot.caption = ggplot2::element_text(
|
plot.caption = element_text(
|
||||||
color = unname(civilytics_colors["navy_300"])
|
color = unname(civilytics_colors["navy_300"])
|
||||||
),
|
),
|
||||||
axis.text = ggplot2::element_text(
|
axis.text = element_text(
|
||||||
color = unname(civilytics_colors["navy_200"])
|
color = unname(civilytics_colors["navy_200"])
|
||||||
),
|
),
|
||||||
axis.title.x = ggplot2::element_text(
|
axis.title.x = element_text(
|
||||||
color = unname(civilytics_colors["navy_300"])
|
color = unname(civilytics_colors["navy_300"])
|
||||||
),
|
),
|
||||||
axis.title.y = ggplot2::element_text(
|
axis.title.y = element_text(
|
||||||
color = unname(civilytics_colors["navy_300"])
|
color = unname(civilytics_colors["navy_300"])
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -389,7 +389,7 @@ theme_civilytics_dark <- function(
|
|||||||
#'
|
#'
|
||||||
#' @inheritParams theme_civilytics
|
#' @inheritParams theme_civilytics
|
||||||
#'
|
#'
|
||||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
#' @return A complete ggplot2 [theme()] object.
|
||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
#' @examples
|
#' @examples
|
||||||
@@ -430,13 +430,13 @@ theme_civilytics_slide <- function(
|
|||||||
grid = grid,
|
grid = grid,
|
||||||
paper_bg = paper_bg
|
paper_bg = paper_bg
|
||||||
) +
|
) +
|
||||||
ggplot2::theme(
|
theme(
|
||||||
axis.line.x = ggplot2::element_line(
|
axis.line.x = element_line(
|
||||||
color = ink,
|
color = ink,
|
||||||
linewidth = 0.8,
|
linewidth = 0.8,
|
||||||
lineend = "square"
|
lineend = "square"
|
||||||
),
|
),
|
||||||
plot.margin = ggplot2::margin(24, 24, 24, 24)
|
plot.margin = margin(24, 24, 24, 24)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -448,23 +448,23 @@ theme_civilytics_slide <- function(
|
|||||||
#' Strips away axes, ticks, gridlines, and axis titles/labels — the elements
|
#' Strips away axes, ticks, gridlines, and axis titles/labels — the elements
|
||||||
#' that are meaningless on a choropleth or spatial plot.
|
#' that are meaningless on a choropleth or spatial plot.
|
||||||
#'
|
#'
|
||||||
#' @return A partial ggplot2 [ggplot2::theme()] object.
|
#' @return A partial ggplot2 [theme()] object.
|
||||||
#' @keywords internal
|
#' @keywords internal
|
||||||
.map_theme_extras <- function() {
|
.map_theme_extras <- function() {
|
||||||
ggplot2::theme(
|
theme(
|
||||||
axis.line = ggplot2::element_blank(),
|
axis.line = element_blank(),
|
||||||
axis.line.x = ggplot2::element_blank(),
|
axis.line.x = element_blank(),
|
||||||
axis.line.y = ggplot2::element_blank(),
|
axis.line.y = element_blank(),
|
||||||
axis.text = ggplot2::element_blank(),
|
axis.text = element_blank(),
|
||||||
axis.text.x = ggplot2::element_blank(),
|
axis.text.x = element_blank(),
|
||||||
axis.text.y = ggplot2::element_blank(),
|
axis.text.y = element_blank(),
|
||||||
axis.ticks = ggplot2::element_blank(),
|
axis.ticks = element_blank(),
|
||||||
axis.ticks.length = ggplot2::unit(0, "pt"),
|
axis.ticks.length = unit(0, "pt"),
|
||||||
axis.title.x = ggplot2::element_blank(),
|
axis.title.x = element_blank(),
|
||||||
axis.title.y = ggplot2::element_blank(),
|
axis.title.y = element_blank(),
|
||||||
panel.grid.major.x = ggplot2::element_blank(),
|
panel.grid.major.x = element_blank(),
|
||||||
panel.grid.major.y = ggplot2::element_blank(),
|
panel.grid.major.y = element_blank(),
|
||||||
panel.grid.minor = ggplot2::element_blank()
|
panel.grid.minor = element_blank()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -478,7 +478,7 @@ theme_civilytics_slide <- function(
|
|||||||
#'
|
#'
|
||||||
#' @inheritParams theme_civilytics
|
#' @inheritParams theme_civilytics
|
||||||
#'
|
#'
|
||||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
#' @return A complete ggplot2 [theme()] object.
|
||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
#' @examples
|
#' @examples
|
||||||
@@ -530,7 +530,7 @@ theme_civilytics_map <- function(
|
|||||||
#'
|
#'
|
||||||
#' @inheritParams theme_civilytics_dark
|
#' @inheritParams theme_civilytics_dark
|
||||||
#'
|
#'
|
||||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
#' @return A complete ggplot2 [theme()] object.
|
||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
#' @examples
|
#' @examples
|
||||||
@@ -581,7 +581,7 @@ theme_civilytics_dark_map <- function(
|
|||||||
#'
|
#'
|
||||||
#' @inheritParams theme_civilytics_slide
|
#' @inheritParams theme_civilytics_slide
|
||||||
#'
|
#'
|
||||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
#' @return A complete ggplot2 [theme()] object.
|
||||||
#' @export
|
#' @export
|
||||||
#'
|
#'
|
||||||
#' @examples
|
#' @examples
|
||||||
|
|||||||
Reference in New Issue
Block a user