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:
@@ -1,6 +1,6 @@
|
||||
#' 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
|
||||
#' for the `ink`, `paper`, and `accent` base-theme parameters.
|
||||
#'
|
||||
@@ -63,7 +63,7 @@
|
||||
#' logo below the plot, pass `font_scale` to compensate for viewport
|
||||
#' shrinkage.
|
||||
#'
|
||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
||||
#' @return A complete ggplot2 [theme()] object.
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
@@ -115,30 +115,30 @@ theme_civilytics <- function(
|
||||
bg_color <- if (isTRUE(paper_bg)) paper else NA
|
||||
|
||||
# Grid line elements
|
||||
grid_line <- ggplot2::element_line(color = rule_color, linewidth = 0.35)
|
||||
no_line <- ggplot2::element_blank()
|
||||
grid_line <- element_line(color = rule_color, linewidth = 0.35)
|
||||
no_line <- element_blank()
|
||||
|
||||
ggplot2::theme_grey(
|
||||
theme_grey(
|
||||
base_size = font_size,
|
||||
base_family = font_family,
|
||||
ink = ink,
|
||||
paper = paper,
|
||||
accent = accent
|
||||
) %+replace%
|
||||
ggplot2::theme(
|
||||
line = ggplot2::element_line(
|
||||
theme(
|
||||
line = element_line(
|
||||
color = ink,
|
||||
linewidth = line_size,
|
||||
linetype = 1,
|
||||
lineend = "butt"
|
||||
),
|
||||
rect = ggplot2::element_rect(
|
||||
rect = element_rect(
|
||||
fill = NA,
|
||||
color = NA,
|
||||
linewidth = line_size,
|
||||
linetype = 1
|
||||
),
|
||||
text = ggplot2::element_text(
|
||||
text = element_text(
|
||||
family = font_family,
|
||||
face = "plain",
|
||||
color = ink,
|
||||
@@ -147,161 +147,161 @@ theme_civilytics <- function(
|
||||
vjust = 0.5,
|
||||
angle = 0,
|
||||
lineheight = 0.9,
|
||||
margin = ggplot2::margin(),
|
||||
margin = margin(),
|
||||
debug = FALSE
|
||||
),
|
||||
# -- Axes --
|
||||
axis.line = ggplot2::element_blank(),
|
||||
axis.line.x = ggplot2::element_line(
|
||||
axis.line = element_blank(),
|
||||
axis.line.x = element_line(
|
||||
color = ink,
|
||||
linewidth = 0.6,
|
||||
lineend = "square"
|
||||
),
|
||||
axis.line.y = ggplot2::element_blank(),
|
||||
axis.text = ggplot2::element_text(
|
||||
axis.line.y = element_blank(),
|
||||
axis.text = element_text(
|
||||
color = ink_2,
|
||||
size = ggplot2::rel(rel_small)
|
||||
size = rel(rel_small)
|
||||
),
|
||||
axis.text.x = ggplot2::element_text(
|
||||
margin = ggplot2::margin(t = small_size / 4),
|
||||
axis.text.x = element_text(
|
||||
margin = margin(t = small_size / 4),
|
||||
vjust = 1
|
||||
),
|
||||
axis.text.x.top = ggplot2::element_text(
|
||||
margin = ggplot2::margin(b = small_size / 4),
|
||||
axis.text.x.top = element_text(
|
||||
margin = margin(b = small_size / 4),
|
||||
vjust = 0
|
||||
),
|
||||
axis.text.y = ggplot2::element_text(
|
||||
margin = ggplot2::margin(r = small_size / 4),
|
||||
axis.text.y = element_text(
|
||||
margin = margin(r = small_size / 4),
|
||||
hjust = 1
|
||||
),
|
||||
axis.text.y.right = ggplot2::element_text(
|
||||
margin = ggplot2::margin(l = small_size / 4),
|
||||
axis.text.y.right = element_text(
|
||||
margin = margin(l = small_size / 4),
|
||||
hjust = 0
|
||||
),
|
||||
axis.ticks = ggplot2::element_line(
|
||||
axis.ticks = element_line(
|
||||
color = ink_3,
|
||||
linewidth = 0.4
|
||||
),
|
||||
axis.ticks.length = ggplot2::unit(4, "pt"),
|
||||
axis.title.x = ggplot2::element_text(
|
||||
size = ggplot2::rel(rel_small),
|
||||
axis.ticks.length = unit(4, "pt"),
|
||||
axis.title.x = element_text(
|
||||
size = rel(rel_small),
|
||||
color = ink_3,
|
||||
margin = ggplot2::margin(t = 10),
|
||||
margin = margin(t = 10),
|
||||
vjust = 1
|
||||
),
|
||||
axis.title.x.top = ggplot2::element_text(
|
||||
size = ggplot2::rel(rel_small),
|
||||
axis.title.x.top = element_text(
|
||||
size = rel(rel_small),
|
||||
color = ink_3,
|
||||
margin = ggplot2::margin(b = half_line / 2),
|
||||
margin = margin(b = half_line / 2),
|
||||
vjust = 0
|
||||
),
|
||||
axis.title.y = ggplot2::element_text(
|
||||
size = ggplot2::rel(rel_small),
|
||||
axis.title.y = element_text(
|
||||
size = rel(rel_small),
|
||||
color = ink_3,
|
||||
angle = 90,
|
||||
margin = ggplot2::margin(r = 10),
|
||||
margin = margin(r = 10),
|
||||
vjust = 1
|
||||
),
|
||||
axis.title.y.right = ggplot2::element_text(
|
||||
size = ggplot2::rel(rel_small),
|
||||
axis.title.y.right = element_text(
|
||||
size = rel(rel_small),
|
||||
color = ink_3,
|
||||
angle = -90,
|
||||
margin = ggplot2::margin(l = half_line / 2),
|
||||
margin = margin(l = half_line / 2),
|
||||
vjust = 0
|
||||
),
|
||||
# -- Legend --
|
||||
legend.background = ggplot2::element_blank(),
|
||||
legend.spacing = ggplot2::unit(font_size, "pt"),
|
||||
legend.background = element_blank(),
|
||||
legend.spacing = unit(font_size, "pt"),
|
||||
legend.spacing.x = NULL,
|
||||
legend.spacing.y = NULL,
|
||||
legend.margin = ggplot2::margin(0, 0, 4, 0),
|
||||
legend.key = ggplot2::element_blank(),
|
||||
legend.key.size = ggplot2::unit(12, "pt"),
|
||||
legend.margin = margin(0, 0, 4, 0),
|
||||
legend.key = element_blank(),
|
||||
legend.key.size = unit(12, "pt"),
|
||||
legend.key.height = NULL,
|
||||
legend.key.width = NULL,
|
||||
legend.text = ggplot2::element_text(
|
||||
size = ggplot2::rel(rel_small),
|
||||
legend.text = element_text(
|
||||
size = rel(rel_small),
|
||||
color = ink_2
|
||||
),
|
||||
legend.title = ggplot2::element_text(
|
||||
legend.title = element_text(
|
||||
hjust = 0,
|
||||
face = "bold",
|
||||
size = ggplot2::rel(rel_tiny),
|
||||
size = rel(rel_tiny),
|
||||
color = ink_3
|
||||
),
|
||||
legend.position = "top",
|
||||
legend.direction = NULL,
|
||||
legend.justification = c("left", "center"),
|
||||
legend.box = NULL,
|
||||
legend.box.margin = ggplot2::margin(0, 0, 0, 0),
|
||||
legend.box.background = ggplot2::element_blank(),
|
||||
legend.box.spacing = ggplot2::unit(font_size, "pt"),
|
||||
legend.box.margin = margin(0, 0, 0, 0),
|
||||
legend.box.background = element_blank(),
|
||||
legend.box.spacing = unit(font_size, "pt"),
|
||||
# -- Panel --
|
||||
panel.background = ggplot2::element_rect(fill = bg_color, color = NA),
|
||||
panel.border = ggplot2::element_blank(),
|
||||
panel.grid.minor = ggplot2::element_blank(),
|
||||
panel.background = element_rect(fill = bg_color, color = NA),
|
||||
panel.border = 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.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.y = NULL,
|
||||
panel.ontop = FALSE,
|
||||
# -- Facet strips --
|
||||
strip.background = ggplot2::element_rect(fill = strip_color, color = NA),
|
||||
strip.text = ggplot2::element_text(
|
||||
strip.background = element_rect(fill = strip_color, color = NA),
|
||||
strip.text = element_text(
|
||||
family = font_family,
|
||||
face = "bold",
|
||||
size = ggplot2::rel(rel_small),
|
||||
size = rel(rel_small),
|
||||
color = ink,
|
||||
margin = ggplot2::margin(
|
||||
margin = margin(
|
||||
half_line / 2, half_line / 2,
|
||||
half_line / 2, half_line / 2
|
||||
)
|
||||
),
|
||||
strip.text.x = NULL,
|
||||
strip.text.y = ggplot2::element_text(angle = -90),
|
||||
strip.text.y = element_text(angle = -90),
|
||||
strip.placement = "inside",
|
||||
strip.placement.x = NULL,
|
||||
strip.placement.y = NULL,
|
||||
strip.switch.pad.grid = ggplot2::unit(half_line / 2, "pt"),
|
||||
strip.switch.pad.wrap = ggplot2::unit(half_line / 2, "pt"),
|
||||
strip.switch.pad.grid = unit(half_line / 2, "pt"),
|
||||
strip.switch.pad.wrap = unit(half_line / 2, "pt"),
|
||||
# -- Plot-level --
|
||||
plot.background = ggplot2::element_rect(fill = bg_color, color = NA),
|
||||
plot.title = ggplot2::element_text(
|
||||
plot.background = element_rect(fill = bg_color, color = NA),
|
||||
plot.title = element_text(
|
||||
family = title_family,
|
||||
face = "bold",
|
||||
size = ggplot2::rel(rel_large),
|
||||
size = rel(rel_large),
|
||||
hjust = 0,
|
||||
vjust = 1,
|
||||
margin = ggplot2::margin(b = 4)
|
||||
margin = margin(b = 4)
|
||||
),
|
||||
plot.title.position = "plot",
|
||||
plot.subtitle = ggplot2::element_text(
|
||||
size = ggplot2::rel(1),
|
||||
plot.subtitle = element_text(
|
||||
size = rel(1),
|
||||
color = ink_2,
|
||||
hjust = 0,
|
||||
vjust = 1,
|
||||
lineheight = 1.3,
|
||||
margin = ggplot2::margin(b = 14)
|
||||
margin = margin(b = 14)
|
||||
),
|
||||
plot.caption = ggplot2::element_text(
|
||||
size = ggplot2::rel(rel_tiny),
|
||||
plot.caption = element_text(
|
||||
size = rel(rel_tiny),
|
||||
color = ink_3,
|
||||
hjust = 0,
|
||||
vjust = 1,
|
||||
lineheight = 1.3,
|
||||
margin = ggplot2::margin(t = 14)
|
||||
margin = margin(t = 14)
|
||||
),
|
||||
plot.caption.position = "plot",
|
||||
plot.tag = ggplot2::element_text(
|
||||
plot.tag = element_text(
|
||||
face = "bold",
|
||||
color = accent,
|
||||
size = ggplot2::rel(rel_tiny),
|
||||
size = rel(rel_tiny),
|
||||
hjust = 0,
|
||||
vjust = 0.7
|
||||
),
|
||||
plot.tag.position = c(0, 1),
|
||||
plot.margin = ggplot2::margin(16, 18, 16, 16),
|
||||
plot.margin = margin(16, 18, 16, 16),
|
||||
complete = TRUE
|
||||
)
|
||||
}
|
||||
@@ -317,7 +317,7 @@ theme_civilytics <- function(
|
||||
#'
|
||||
#' @inheritParams theme_civilytics
|
||||
#'
|
||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
||||
#' @return A complete ggplot2 [theme()] object.
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
@@ -361,20 +361,20 @@ theme_civilytics_dark <- function(
|
||||
# The base theme hardcodes ink_2/ink_3 for subtitle/caption, which are
|
||||
# dark colors meant for light backgrounds. Override with lighter values
|
||||
# so text remains readable on the navy background.
|
||||
ggplot2::theme(
|
||||
plot.subtitle = ggplot2::element_text(
|
||||
theme(
|
||||
plot.subtitle = element_text(
|
||||
color = unname(civilytics_colors["navy_200"])
|
||||
),
|
||||
plot.caption = ggplot2::element_text(
|
||||
plot.caption = element_text(
|
||||
color = unname(civilytics_colors["navy_300"])
|
||||
),
|
||||
axis.text = ggplot2::element_text(
|
||||
axis.text = element_text(
|
||||
color = unname(civilytics_colors["navy_200"])
|
||||
),
|
||||
axis.title.x = ggplot2::element_text(
|
||||
axis.title.x = element_text(
|
||||
color = unname(civilytics_colors["navy_300"])
|
||||
),
|
||||
axis.title.y = ggplot2::element_text(
|
||||
axis.title.y = element_text(
|
||||
color = unname(civilytics_colors["navy_300"])
|
||||
)
|
||||
)
|
||||
@@ -389,7 +389,7 @@ theme_civilytics_dark <- function(
|
||||
#'
|
||||
#' @inheritParams theme_civilytics
|
||||
#'
|
||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
||||
#' @return A complete ggplot2 [theme()] object.
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
@@ -430,13 +430,13 @@ theme_civilytics_slide <- function(
|
||||
grid = grid,
|
||||
paper_bg = paper_bg
|
||||
) +
|
||||
ggplot2::theme(
|
||||
axis.line.x = ggplot2::element_line(
|
||||
theme(
|
||||
axis.line.x = element_line(
|
||||
color = ink,
|
||||
linewidth = 0.8,
|
||||
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
|
||||
#' that are meaningless on a choropleth or spatial plot.
|
||||
#'
|
||||
#' @return A partial ggplot2 [ggplot2::theme()] object.
|
||||
#' @return A partial ggplot2 [theme()] object.
|
||||
#' @keywords internal
|
||||
.map_theme_extras <- function() {
|
||||
ggplot2::theme(
|
||||
axis.line = ggplot2::element_blank(),
|
||||
axis.line.x = ggplot2::element_blank(),
|
||||
axis.line.y = ggplot2::element_blank(),
|
||||
axis.text = ggplot2::element_blank(),
|
||||
axis.text.x = ggplot2::element_blank(),
|
||||
axis.text.y = ggplot2::element_blank(),
|
||||
axis.ticks = ggplot2::element_blank(),
|
||||
axis.ticks.length = ggplot2::unit(0, "pt"),
|
||||
axis.title.x = ggplot2::element_blank(),
|
||||
axis.title.y = ggplot2::element_blank(),
|
||||
panel.grid.major.x = ggplot2::element_blank(),
|
||||
panel.grid.major.y = ggplot2::element_blank(),
|
||||
panel.grid.minor = ggplot2::element_blank()
|
||||
theme(
|
||||
axis.line = element_blank(),
|
||||
axis.line.x = element_blank(),
|
||||
axis.line.y = element_blank(),
|
||||
axis.text = element_blank(),
|
||||
axis.text.x = element_blank(),
|
||||
axis.text.y = element_blank(),
|
||||
axis.ticks = element_blank(),
|
||||
axis.ticks.length = unit(0, "pt"),
|
||||
axis.title.x = element_blank(),
|
||||
axis.title.y = element_blank(),
|
||||
panel.grid.major.x = element_blank(),
|
||||
panel.grid.major.y = element_blank(),
|
||||
panel.grid.minor = element_blank()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -478,7 +478,7 @@ theme_civilytics_slide <- function(
|
||||
#'
|
||||
#' @inheritParams theme_civilytics
|
||||
#'
|
||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
||||
#' @return A complete ggplot2 [theme()] object.
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
@@ -530,7 +530,7 @@ theme_civilytics_map <- function(
|
||||
#'
|
||||
#' @inheritParams theme_civilytics_dark
|
||||
#'
|
||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
||||
#' @return A complete ggplot2 [theme()] object.
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
@@ -581,7 +581,7 @@ theme_civilytics_dark_map <- function(
|
||||
#'
|
||||
#' @inheritParams theme_civilytics_slide
|
||||
#'
|
||||
#' @return A complete ggplot2 [ggplot2::theme()] object.
|
||||
#' @return A complete ggplot2 [theme()] object.
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
|
||||
Reference in New Issue
Block a user