Package 'tinythemes'

Title: Lightweight Repackaging of 'Themes' for 'ggplot2'
Description: Themes for 'ggplot2' are a convenient way to style plots. The 'hrbrthemes' package contains a particularly nice one, but brings along a significant tail of dependencies. So this (currently experimental) package brings along just the 'theme_ipsum_rc' theme using the 'Roboto' 'Condensed' font. Should the font not be installed on your system, see the help in the package 'hrbrthemes' on how to install 'Roboto Condensed'.
Authors: Dirk Eddelbuettel [aut, cre] , Bob Rudis [aut]
Maintainer: Dirk Eddelbuettel <[email protected]>
License: MIT + file LICENSE
Version: 0.0.2
Built: 2024-06-30 06:58:13 UTC
Source: https://github.com/eddelbuettel/tinythemes

Help Index


Lightweight Repackaging of 'Themes' for 'ggplot2'

Description

Themes for 'ggplot2' are a convenient way to style plots. The 'hrbrthemes' package contains a particularly nice one, but brings along a significant tail of dependencies. So this (currently experimental) package brings along just the 'theme_ipsum_rc' theme using the 'Roboto' 'Condensed' font. Should the font not be installed on your system, see the help in the package 'hrbrthemes' on how to install 'Roboto Condensed'.

Package Content

Index of help topics:

theme_ipsum_rc          A precise & pristine ggplot2 theme with
                        opinionated defaults and an emphasis on
                        typography
tinythemes-package      Lightweight Repackaging of 'Themes' for
                        'ggplot2'

Maintainer

Dirk Eddelbuettel <[email protected]>

Author(s)

Dirk Eddelbuettel [aut, cre] (<https://orcid.org/0000-0001-6419-907X>), Bob Rudis [aut] (<https://orcid.org/0000-0001-5670-2640>)


A precise & pristine ggplot2 theme with opinionated defaults and an emphasis on typography

Description

You should consult the documentation of the hrbrthemes package if the font does not load properly. There is an option hrbrthemes.loadfonts which – if set to TRUE – will call extrafont::loadfonts() to register non-core fonts with R PDF & PostScript devices. If you are running under Windows, the package calls the same function to register non-core fonts with the Windows graphics device.

Usage

theme_ipsum_rc(
  base_family = "Roboto Condensed",
  base_size = 11.5,
  plot_title_family = base_family,
  plot_title_size = 18,
  plot_title_face = "bold",
  plot_title_margin = 10,
  subtitle_family = if (.Platform$OS.type == "windows") "Roboto Condensed" else
    "Roboto Condensed Light",
  subtitle_size = 13,
  subtitle_face = "plain",
  subtitle_margin = 15,
  strip_text_family = base_family,
  strip_text_size = 12,
  strip_text_face = "plain",
  caption_family = if (.Platform$OS.type == "windows") "Roboto Condensed" else
    "Roboto Condensed Light",
  caption_size = 9,
  caption_face = "plain",
  caption_margin = 10,
  axis_text_size = base_size,
  axis_title_family = base_family,
  axis_title_size = 9,
  axis_title_face = "plain",
  axis_title_just = "rt",
  plot_margin = margin(30, 30, 30, 30),
  panel_spacing = grid::unit(2, "lines"),
  grid_col = "#cccccc",
  grid = TRUE,
  axis_col = "#cccccc",
  axis = FALSE,
  ticks = FALSE
)

Arguments

base_family, base_size

base font family and size

plot_title_family, plot_title_face, plot_title_size, plot_title_margin

plot tilte family, face, size and margin

subtitle_family, subtitle_face, subtitle_size

plot subtitle family, face and size

subtitle_margin

plot subtitle margin bottom (single numeric value)

strip_text_family, strip_text_face, strip_text_size

facet label font family, face and size

caption_family, caption_face, caption_size, caption_margin

plot caption family, face, size and margin

axis_text_size

font size of axis text

axis_title_family, axis_title_face, axis_title_size

axis title font family, face and size

axis_title_just

axis title font justification one of ⁠[blmcrt]⁠

plot_margin

plot margin (specify with ggplot2::margin)

panel_spacing

panel spacing (use unit())

grid_col

grid color

grid

panel grid (TRUE, FALSE, or a combination of X, x, Y, y)

axis_col

axis color

axis

add x or y axes? TRUE, FALSE, "xy"

ticks

ticks if TRUE add ticks

Value

A ggplot2-compatible 'theme' data structure is returned for use in standard ggplot2 usage.

Why Roboto Condensed?

It is free, has tolerable kerning pairs and multiple weights. It is also different than Arial Narrow and the fonts most folks use in ggplot2 charts.

Examples

if (interactive()) {  # default postscript device used in tests does not have font
library(ggplot2)

# seminal scatterplot
ggplot(mtcars, aes(mpg, wt)) +
  geom_point() +
  labs(x="Fuel efficiency (mpg)", y="Weight (tons)",
       title="Seminal ggplot2 scatterplot example",
       subtitle="A plot that is only useful for demonstration purposes",
       caption="Brought to you by the letter 'g'") +
  theme_ipsum_rc()

# seminal bar chart

# note: make this font_rc on Windows
if (Sys.info()[["sysname"]] == "Windows")
  update_geom_font_defaults(family=font_rc_light)

data.frame(table(mpg$class)) |>
  ggplot(aes(x = Var1, y = Freq)) +
  geom_col() +
  geom_text(aes(label = Freq), nudge_y=3) +
  labs(x="Fuel efficiency (mpg)", y="Weight (tons)",
       title="Seminal ggplot2 bar chart example",
       subtitle="A plot that is only useful for demonstration purposes",
       caption="Brought to you by the letter 'g'") +
  theme_ipsum_rc(grid="Y") +
  theme(axis.text.y=element_blank())
}