Fix ggplot2 imports and polish utility functions for publication
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:
2026-08-09 14:21:07 -04:00
parent 023aedf83a
commit e43c4229c3
5 changed files with 179 additions and 171 deletions
+7 -7
View File
@@ -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),
... ...
) )
+9 -5
View File
@@ -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]]
paste(toupper(substring(s, 1,1)), substring(s, 2), # Vectorised over elements of x — each element is capitalised independently.
sep = "", collapse = " ") vapply(x, function(word) {
s <- strsplit(word, " ")[[1]]
paste(toupper(substring(s, 1, 1)), substring(s, 2),
sep = "", collapse = " ")
}, character(1))
} }
+52 -48
View File
@@ -1,48 +1,52 @@
# 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 y a vector of identifiers to check against x #' @param x A vector of identifiers to check against `y`.
#' @param distinct logical, should duplicate values of x and y be removed before testing #' @param y A vector of identifiers to look for a match in.
#' #' @param distinct Logical. Should duplicate values of `x` and `y` be removed
#' @return nothing, print a summary of match statistics to the console #' before testing? Default is `TRUE`.
#' @export #'
#' #' @return Invisibly returns `NULL`; prints a formatted summary of match
#' @examples #' statistics to the console via [writeLines()].
#' x <- LETTERS #' @export
#' y <- c(letters, LETTERS) #'
#' match_test(x, y) #' @examples
match_test <- function(x, y, distinct = TRUE) { #' x <- LETTERS
if (distinct) { #' y <- c(letters, LETTERS)
x <- unique(x) #' match_test(x, y)
y <- unique(y) match_test <- function(x, y, distinct = TRUE) {
cat("**** Distinct Matches ****") if (distinct) {
cat("\n") x <- unique(x)
y <- unique(y)
} }
# 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)
total_y <- length(y) yinx <- sum(y %in% x)
total_y <- length(y)
cat("**** Match Summary ****") pct_y <- round(100 * yinx / total_y, 2)
cat("\n")
cat("X in Y") header <- if (distinct) "Distinct Matches" else "All Values"
cat("\n")
cat(paste0("Of the ", total_x, " X values, ", xiny, " (", lines <- c(
100*round(xiny/total_x, 2), "%) were matched.")) paste0("**** ", header, " ****"),
cat("\n") "",
cat("********************************************") "X in Y",
cat("\n") sprintf("Of the %d X values, %d (%s%%) were matched.",
cat("Y in X") total_x, xiny, format(pct_x, nsmall = 2)),
cat("\n") strrep("*", 40),
cat(paste0("Of the ", total_y, " Y values, ", yinx, " (", "",
100*round(yinx/total_y, 2), "%) were matched.")) "Y in X",
cat("\n") sprintf("Of the %d Y values, %d (%s%%) were matched.",
cat("******************************************") total_y, yinx, format(pct_y, nsmall = 2)),
strrep("*", 38)
} )
writeLines(lines)
invisible(NULL)
}
+9 -9
View File
@@ -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
) )
+102 -102
View File
@@ -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