Files
civilyticsR/man/theme_civilytics.Rd
T
jared f134621df5
R-CMD-check / R CMD check (push) Successful in 3m33s
fix: bump base font_size to 16pt and drop fig.retina for readable README
The old fig.retina=2 at 150 DPI rendered PNGs at 2x resolution that
GitHub markdown can't use, making text appear half its intended size.
Switching to 96 DPI without retina produces images at their natural
display size. Combined with the base font bump (14 → 16pt), titles
and labels now render with proper editorial presence.
2026-05-19 14:40:48 -06:00

130 lines
4.1 KiB
R

% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/theme.R
\name{theme_civilytics}
\alias{theme_civilytics}
\title{Civilytics ggplot2 theme}
\usage{
theme_civilytics(
font_size = 16,
font_family = CV_FONT_SANS,
title_family = CV_FONT_DISPLAY,
line_size = 0.5,
rel_small = 12/14,
rel_tiny = 11/14,
rel_large = 20/14,
ink = unname(civilytics_colors["ink"]),
paper = unname(civilytics_colors["paper"]),
accent = unname(civilytics_colors["ember_600"]),
strip_color = unname(civilytics_colors["paper_2"]),
grid = c("y", "x", "both", "none"),
paper_bg = TRUE
)
}
\arguments{
\item{font_size}{Numeric. Base font size in points. Default `16`.}
\item{font_family}{Character. Font family for body/axis text. Default
`"Inter"` (loaded via showtext).}
\item{title_family}{Character. Font family for plot titles and strip labels.
Default `"Libre Franklin"` (loaded via showtext).}
\item{line_size}{Numeric. Base line width. Default `0.5`.}
\item{rel_small}{Numeric. Scale factor for small text relative to
`font_size`. Default `12/14`.}
\item{rel_tiny}{Numeric. Scale factor for tiny text relative to `font_size`.
Default `11/14`.}
\item{rel_large}{Numeric. Scale factor for large text (titles) relative to
`font_size`. Default `20/14` (~1.43x), matching the Civilytics editorial
design system.}
\item{ink}{Character. Hex code for foreground/text color. Defaults to
[civilytics_colors]`["ink"]` (`#0E1A2B`).}
\item{paper}{Character. Hex code for background color. Defaults to
[civilytics_colors]`["paper"]` (`#FAF7F2`).}
\item{accent}{Character. Hex code for accent/highlight color. Defaults to
[civilytics_colors]`["ember_600"]` (`#C25311`).}
\item{strip_color}{Character. Hex code for facet strip background. Defaults
to [civilytics_colors]`["paper_2"]` (`#F2EDE4`).}
\item{grid}{Character. Which major gridlines to draw: `"y"` (default,
horizontal only), `"x"` (vertical only), `"both"`, or `"none"`.}
\item{paper_bg}{Logical. If `TRUE` (default), fill the plot and panel
backgrounds with the warm `paper` color. Set to `FALSE` for a
transparent background (useful for slides or overlay on colored
surfaces).}
}
\value{
A complete ggplot2 [ggplot2::theme()] object.
}
\description{
A complete ggplot2 theme built on [ggplot2::theme_grey()] using the
Civilytics brand color palette and typography. Requires ggplot2 >= 4.0.0
for the `ink`, `paper`, and `accent` base-theme parameters.
}
\details{
Produces an editorial, Pew-style layout: visible x-axis line to ground
the data, light horizontal gridlines for reference, no panel border or
y-axis line. Plot title and caption are left-aligned to the full plot
region.
Brand fonts (Inter for UI text, Libre Franklin for titles) are loaded
automatically via [showtext] when the package is attached. Call
[civilytics_load_fonts()] to reload them if needed.
}
\section{Font size hierarchy}{
All text sizes are derived from `font_size` using relative scale factors.
At the default `font_size = 14`:
| Element | Scale factor | Default size |
|:--------|:-------------|:-------------|
| Plot title | `rel_large` (1.43x) | ~23 pt |
| Subtitle | 1.0x | 16 pt |
| Axis text (tick labels) | `rel_small` (0.86x) | ~14 pt |
| Axis titles | `rel_small` (0.86x) | ~14 pt |
| Legend text | `rel_small` (0.86x) | ~14 pt |
| Caption | `rel_tiny` (0.79x) | ~13 pt |
| Legend title | `rel_tiny` (0.79x) | ~13 pt |
| Strip text (facets) | `rel_small` (0.86x) | ~14 pt |
To uniformly scale all text, change `font_size`. To adjust only the title
prominence, change `rel_large`. When using [civilytics_logo()] to add a
logo below the plot, pass `font_scale` to compensate for viewport
shrinkage.
}
\examples{
\dontrun{
library(ggplot2)
# Default editorial theme
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
theme_civilytics()
# With both gridlines and brand colors
ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point() +
scale_color_civilytics() +
theme_civilytics(grid = "both")
# Transparent background for embedding
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
theme_civilytics(paper_bg = FALSE)
# Larger text for poster or display
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
theme_civilytics(font_size = 18)
}
}