Browse Source

econ sans

tags/0.8.0
boB Rudis 5 years ago
parent
commit
52272af241
No known key found for this signature in database GPG Key ID: 1D7529BE14E2BBA9
  1. 4
      NAMESPACE
  2. 245
      R/econ-sans.R
  3. 13
      README.Rmd
  4. BIN
      inst/fonts/econ-sans/econsans-condensed-primary-subset-bd-it.ttf
  5. BIN
      inst/fonts/econ-sans/econsans-condensed-primary-subset-bd.ttf
  6. BIN
      inst/fonts/econ-sans/econsans-condensed-primary-subset-it.ttf
  7. BIN
      inst/fonts/econ-sans/econsans-condensed-primary-subset-li-it.ttf
  8. BIN
      inst/fonts/econ-sans/econsans-condensed-primary-subset-li.ttf
  9. BIN
      inst/fonts/econ-sans/econsans-condensed-primary-subset-md-it.ttf
  10. BIN
      inst/fonts/econ-sans/econsans-condensed-primary-subset-md.ttf
  11. BIN
      inst/fonts/econ-sans/econsans-condensed-primary-subset-rg.ttf
  12. 31
      man/EconSansCondensed.Rd
  13. 23
      man/import_econ_sans.Rd
  14. 98
      man/theme_ipsum_rc.Rd

4
NAMESPACE

@ -3,6 +3,9 @@
export("%>%")
export(flush_ticks)
export(font_an)
export(font_es)
export(font_es_bold)
export(font_es_light)
export(font_ps)
export(font_ps_light)
export(font_pub)
@ -19,6 +22,7 @@ export(ft_geom_defaults)
export(ft_pal)
export(ft_text_col)
export(gg_check)
export(import_econ_sans)
export(import_plex_sans)
export(import_public_sans)
export(import_roboto_condensed)

245
R/econ-sans.R

@ -0,0 +1,245 @@
#' A precise & pristine [ggplot2] theme with opinionated defaults and an emphasis on typoghraphy
#'
#' You should [import_econ_sans]() first and also install the fonts on your
#' system before trying to use this theme.
#'
#' 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.
#'
#' @md
#' @section Why Econ Sans Condensed?:
#' It's free, has tolerable kerning pairs and multiple weights. It's also different
#' than Arial Narrow and the fonts most folks use in ggplot2 charts.
#'
#' @md
#' @param base_family,base_size base font family and size
#' @param plot_title_family,plot_title_face,plot_title_size,plot_title_margin plot tilte family, face, size and margin
#' @param subtitle_family,subtitle_face,subtitle_size plot subtitle family, face and size
#' @param subtitle_margin plot subtitle margin bottom (single numeric value)
#' @param strip_text_family,strip_text_face,strip_text_size facet label font family, face and size
#' @param caption_family,caption_face,caption_size,caption_margin plot caption family, face, size and margin
#' @param axis_title_family,axis_title_face,axis_title_size axis title font family, face and size
#' @param axis_title_just axis title font justificationk one of `[blmcrt]`
#' @param axis_text_size font size of axis text
#' @param plot_margin plot margin (specify with [ggplot2::margin])
#' @param panel_spacing panel spacing (use `unit()`)
#' @param grid_col grid color
#' @param grid panel grid (`TRUE`, `FALSE`, or a combination of `X`, `x`, `Y`, `y`)
#' @param axis_col axis color
#' @param axis add x or y axes? `TRUE`, `FALSE`, "`xy`"
#' @param ticks ticks if `TRUE` add ticks
#' @export
#' @examples \dontrun{
#' library(ggplot2)
#' library(dplyr)
#'
#' # seminal scatterplot
#' ggplot(mtcars, aes(mpg, wt)) +
#' geom_point() +
#' labs(x="Fuel effiiency (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_es()
#'
#' # seminal bar chart
#'
#' # note: may need to make this font_es on Windows
#' update_geom_font_defaults(family=font_es_light)
#'
#' count(mpg, class) %>%
#' ggplot(aes(class, n)) +
#' geom_col() +
#' geom_text(aes(label=n), nudge_y=3) +
#' labs(x="Fuel effiiency (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_es(grid="Y") +
#' theme(axis.text.y=element_blank())
#' }
theme_ipsum_rc <- function(
base_family="EconSansCndReg", base_size = 11.5,
plot_title_family="EconSansCndBol", plot_title_size = 18,
plot_title_face="bold", plot_title_margin = 10,
subtitle_family=if (.Platform$OS.type == "windows") "EconSansCndLig" else "EconSansCndLigt",
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") "EconSansCndLig" else "EconSansCndLig",
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) {
ret <- ggplot2::theme_minimal(base_family = base_family, base_size = base_size)
ret <- ret + theme(legend.background = element_blank())
ret <- ret + theme(legend.key = element_blank())
ret <- ret + theme(plot.margin = plot_margin)
ret <- ret + theme(panel.spacing = panel_spacing)
if (inherits(grid, "character") | grid == TRUE) {
ret <- ret + theme(panel.grid = element_line(color = grid_col, size = 0.2))
ret <- ret + theme(panel.grid.major = element_line(color = grid_col, size = 0.2))
ret <- ret + theme(panel.grid.minor = element_line(color = grid_col, size = 0.15))
if (inherits(grid, "character")) {
if (regexpr("X", grid)[1] < 0) ret <- ret + theme(panel.grid.major.x = element_blank())
if (regexpr("Y", grid)[1] < 0) ret <- ret + theme(panel.grid.major.y = element_blank())
if (regexpr("x", grid)[1] < 0) ret <- ret + theme(panel.grid.minor.x = element_blank())
if (regexpr("y", grid)[1] < 0) ret <- ret + theme(panel.grid.minor.y = element_blank())
}
} else {
ret <- ret + theme(panel.grid = element_blank())
ret <- ret + theme(panel.grid.major = element_blank())
ret <- ret + theme(panel.grid.major.x = element_blank())
ret <- ret + theme(panel.grid.major.y = element_blank())
ret <- ret + theme(panel.grid.minor = element_blank())
ret <- ret + theme(panel.grid.minor.x = element_blank())
ret <- ret + theme(panel.grid.minor.y = element_blank())
}
if (inherits(axis, "character") | axis == TRUE) {
ret <- ret + theme(axis.line = element_line(color = axis_col, size = 0.15))
if (inherits(axis, "character")) {
axis <- tolower(axis)
if (regexpr("x", axis)[1] < 0) {
ret <- ret + theme(axis.line.x = element_blank())
} else {
ret <- ret + theme(axis.line.x = element_line(color = axis_col, size = 0.15))
}
if (regexpr("y", axis)[1] < 0) {
ret <- ret + theme(axis.line.y = element_blank())
} else {
ret <- ret + theme(axis.line.y = element_line(color = axis_col, size = 0.15))
}
} else {
ret <- ret + theme(axis.line.x = element_line(color = axis_col, size = 0.15))
ret <- ret + theme(axis.line.y = element_line(color = axis_col, size = 0.15))
}
} else {
ret <- ret + theme(axis.line = element_blank())
}
if (!ticks) {
ret <- ret + theme(axis.ticks = element_blank())
ret <- ret + theme(axis.ticks.x = element_blank())
ret <- ret + theme(axis.ticks.y = element_blank())
} else {
ret <- ret + theme(axis.ticks = element_line(size = 0.15))
ret <- ret + theme(axis.ticks.x = element_line(size = 0.15))
ret <- ret + theme(axis.ticks.y = element_line(size = 0.15))
ret <- ret + theme(axis.ticks.length = grid::unit(5, "pt"))
}
xj <- switch(tolower(substr(axis_title_just, 1, 1)), b = 0, l = 0, m = 0.5, c = 0.5, r = 1, t = 1)
yj <- switch(tolower(substr(axis_title_just, 2, 2)), b = 0, l = 0, m = 0.5, c = 0.5, r = 1, t = 1)
ret <- ret + theme(axis.text = element_text(size = axis_text_size, margin = margin(t = 0, r = 0)))
ret <- ret + theme(axis.text.x = element_text(size = axis_text_size, margin = margin(t = 0)))
ret <- ret + theme(axis.text.y = element_text(size = axis_text_size, margin = margin(r = 0)))
ret <- ret + theme(axis.title = element_text(size = axis_title_size, family = axis_title_family))
ret <- ret + theme(axis.title.x = element_text(
hjust = xj, size = axis_title_size,
family = axis_title_family, face = axis_title_face
))
ret <- ret + theme(axis.title.y = element_text(
hjust = yj, size = axis_title_size,
family = axis_title_family, face = axis_title_face
))
ret <- ret + theme(axis.title.y.right = element_text(
hjust = yj, size = axis_title_size, angle = 90,
family = axis_title_family, face = axis_title_face
))
ret <- ret + theme(strip.text = element_text(
hjust = 0, size = strip_text_size,
face = strip_text_face, family = strip_text_family
))
ret <- ret + theme(plot.title = element_text(
hjust = 0, size = plot_title_size,
margin = margin(b = plot_title_margin),
family = plot_title_family, face = plot_title_face
))
ret <- ret + theme(plot.subtitle = element_text(
hjust = 0, size = subtitle_size,
margin = margin(b = subtitle_margin),
family = subtitle_family, face = subtitle_face
))
ret <- ret + theme(plot.caption = element_text(
hjust = 1, size = caption_size,
margin = margin(t = caption_margin),
family = caption_family, face = caption_face
))
ret
}
#' Import Roboto Condensed font for use in charts
#'
#' Roboto Condensed is a trademark of Google.
#'
#' 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.
#'
#' @md
#' @note This will take care of ensuring PDF/PostScript usage. The location of the
#' font directory is displayed after the base import is complete. It is highly
#' recommended that you install them on your system the same way you would any
#' other font you wish to use in other programs.
#' @export
import_econ_sans <- function() {
rc_font_dir <- system.file("fonts", "econ-sans", package="hrbrthemes")
suppressWarnings(suppressMessages(extrafont::font_import(es_font_dir, prompt=FALSE)))
message(
"You will likely need to install these fonts on your system as well.\n\n",
"You can find them in [", es_font_dir, "]"
)
}
#' @rdname EconSansCondensed
#' @md
#' @title Econ Sans Condensed font name R variable aliases
#' @description `font_es` == "`EconSansCndLig`"
#' @format length 1 character vector
#' @export
font_es <- "EconSansCndReg"
#' @rdname EconSansCondensed
#' @md
#' @note `font_es_bold` (a.k.a. "`EconSansCndBol`") is not available on
#' Windows and will throw a warning if used in plots.
#' @description `font_es_bold` == "`EconSansCndBol`"
#' @export
font_es_bold <- "EconSansCndLig"
#' @rdname EconSansCondensed
#' @md
#' @note `font_es_light` (a.k.a. "`EconSansCndLig`") is not available on
#' Windows and will throw a warning if used in plots.
#' @description `font_es_light` == "`EconSansCndLig`"
#' @export
font_es_light <- "EconSansCndLig"

13
README.Rmd

@ -7,16 +7,16 @@ knitr::opts_chunk$set(collapse=TRUE, comment="##", fig.retina=2, fig.path = "REA
## `hrbrthemes` : Additional Themes and Theme Components for 'ggplot2'
[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active)
[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active)
[![codecov](https://codecov.io/gh/hrbrmstr/hrbrthemes/branch/master/graph/badge.svg)](https://codecov.io/gh/hrbrmstr/hrbrthemes)
[![Travis-CI Build Status](https://travis-ci.org/hrbrmstr/hrbrthemes.svg?branch=master)](https://travis-ci.org/hrbrmstr/hrbrthemes)
[![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/hrbrthemes)](https://cran.r-project.org/package=hrbrthemes)
![downloads](http://cranlogs.r-pkg.org/badges/grand-total/hrbrthemes)
[![CRAN_Status_Badge](https://www.r-pkg.org/badges/version/hrbrthemes)](https://cran.r-project.org/package=hrbrthemes)
![downloads](https://cranlogs.r-pkg.org/badges/grand-total/hrbrthemes)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2545422.svg)](https://doi.org/10.5281/zenodo.2545422)
----
This is a very focused package that provides typography-centric themes and theme components for ggplot2. It's a an extract/riff of [`hrbrmisc`](http://github.com/hrbrmstr/hrbrmisc) created by request.
This is a very focused package that provides typography-centric themes and theme components for ggplot2. It's a an extract/riff of [`hrbrmisc`](https://github.com/hrbrmstr/hrbrmisc) created by request.
The core theme: `theme_ipsum` ("ipsum" is Latin for "precise") uses Arial Narrow which should be installed on practically any modern system, so it's "free"-ish. This font is condensed, has solid default kerning pairs and geometric numbers. That's what I consider the "font trifecta" must-have for charts. An additional quality for fonts for charts is that they have a diversity of weights. Arial Narrow (the one on most systems, anyway) does not have said diversity but this quality is not (IMO) a "must have".
@ -25,6 +25,7 @@ The following functions are implemented/objects are exported:
Themes:
- `theme_ipsum`: Arial Narrow
- `theme_ipsum_es`: Ccon Sans Condensed
- `theme_ipsum_rc`: Roboto Condensed
- `theme_ipsum_ps`: IBM Plex Sans font
- `theme_ipsum_pub`: Public Sans
@ -55,6 +56,9 @@ Palettes/Named Colors:
Fonts:
- `font_an`: Arial Narrow font name R variable aliases
- `font_es`: Econ Sans font name R variable aliases
- `font_es_bold`: Econ Sans font name R variable aliases
- `font_es_light`: Econ Sans font name R variable aliases
- `font_rc`: Roboto Condensed font name R variable aliases
- `font_rc_light`: Roboto Condensed font name R variable aliases
- `font_pub`: Public Sans font name R variable aliases
@ -77,6 +81,7 @@ Utilities:
- `flush_ticks`: Makes axis text labels flush on the ends
- `ft_geom_defaults`: Change geom defaults from black to custom lights for the FT theme
- `gg_check`: Spell check ggplot2 plot labels
- `import_econ_sans`: Import Econ Sans Condensed font for use in charts
- `import_plex_sans`: Import IBM Plex Sans font for use in charts
- `import_roboto_condensed`: Import Roboto Condensed font for use in charts
- `import_titillium_web`: Import Titillium Web font for use in charts

BIN
inst/fonts/econ-sans/econsans-condensed-primary-subset-bd-it.ttf

Binary file not shown.

BIN
inst/fonts/econ-sans/econsans-condensed-primary-subset-bd.ttf

Binary file not shown.

BIN
inst/fonts/econ-sans/econsans-condensed-primary-subset-it.ttf

Binary file not shown.

BIN
inst/fonts/econ-sans/econsans-condensed-primary-subset-li-it.ttf

Binary file not shown.

BIN
inst/fonts/econ-sans/econsans-condensed-primary-subset-li.ttf

Binary file not shown.

BIN
inst/fonts/econ-sans/econsans-condensed-primary-subset-md-it.ttf

Binary file not shown.

BIN
inst/fonts/econ-sans/econsans-condensed-primary-subset-md.ttf

Binary file not shown.

BIN
inst/fonts/econ-sans/econsans-condensed-primary-subset-rg.ttf

Binary file not shown.

31
man/EconSansCondensed.Rd

@ -0,0 +1,31 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/econ-sans.R
\docType{data}
\name{font_es}
\alias{font_es}
\alias{font_es_bold}
\alias{font_es_light}
\title{Econ Sans Condensed font name R variable aliases}
\format{length 1 character vector}
\usage{
font_es
font_es_bold
font_es_light
}
\description{
\code{font_es} == "\code{EconSansCndLig}"
\code{font_es_bold} == "\code{EconSansCndBol}"
\code{font_es_light} == "\code{EconSansCndLig}"
}
\note{
\code{font_es_bold} (a.k.a. "\code{EconSansCndBol}") is not available on
Windows and will throw a warning if used in plots.
\code{font_es_light} (a.k.a. "\code{EconSansCndLig}") is not available on
Windows and will throw a warning if used in plots.
}
\keyword{datasets}

23
man/import_econ_sans.Rd

@ -0,0 +1,23 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/econ-sans.R
\name{import_econ_sans}
\alias{import_econ_sans}
\title{Import Roboto Condensed font for use in charts}
\usage{
import_econ_sans()
}
\description{
Roboto Condensed is a trademark of Google.
}
\details{
There is an option \code{hrbrthemes.loadfonts} which -- if set to \code{TRUE} -- will
call \code{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.
}
\note{
This will take care of ensuring PDF/PostScript usage. The location of the
font directory is displayed after the base import is complete. It is highly
recommended that you install them on your system the same way you would any
other font you wish to use in other programs.
}

98
man/theme_ipsum_rc.Rd

@ -1,11 +1,28 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/ft.R, R/modern.r, R/roboto-condensed.r
\name{theme_ft_rc}
% Please edit documentation in R/econ-sans.R, R/ft.R, R/modern.r,
% R/roboto-condensed.r
\name{theme_ipsum_rc}
\alias{theme_ipsum_rc}
\alias{theme_ft_rc}
\alias{theme_modern_rc}
\alias{theme_ipsum_rc}
\title{A precise & pristine \link{ggplot2} theme with opinionated defaults and an emphasis on typoghraphy}
\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)
theme_ft_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,
@ -73,19 +90,54 @@ theme_ipsum_rc(base_family = "Roboto Condensed", base_size = 11.5,
\item{plot_margin}{plot margin (specify with \link[ggplot2:margin]{ggplot2::margin})}
\item{panel_spacing}{panel spacing (use \code{unit()})}
\item{grid_col}{grid color}
\item{grid}{panel grid (\code{TRUE}, \code{FALSE}, or a combination of \code{X}, \code{x}, \code{Y}, \code{y})}
\item{axis_col}{axis color}
\item{axis}{add x or y axes? \code{TRUE}, \code{FALSE}, "\code{xy}"}
\item{ticks}{ticks if \code{TRUE} add ticks}
\item{base_family, base_size}{base font family and size}
\item{plot_title_family, plot_title_face, plot_title_size, plot_title_margin}{plot tilte family, face, size and margin}
\item{subtitle_family, subtitle_face, subtitle_size}{plot subtitle family, face and size}
\item{subtitle_margin}{plot subtitle margin bottom (single numeric value)}
\item{strip_text_family, strip_text_face, strip_text_size}{facet label font family, face and size}
\item{caption_family, caption_face, caption_size, caption_margin}{plot caption family, face, size and margin}
\item{axis_title_family, axis_title_face, axis_title_size}{axis title font family, face and size}
\item{axis_title_just}{axis title font justificationk one of \code{[blmcrt]}}
\item{axis_text_size}{font size of axis text}
\item{plot_margin}{plot margin (specify with \link[ggplot2:margin]{ggplot2::margin})}
\item{panel_spacing}{panel spacing (use \code{unit()})}
\item{grid_col}{grid color}
\item{grid}{panel grid (\code{TRUE}, \code{FALSE}, or a combination of \code{X}, \code{x}, \code{Y}, \code{y})}
\item{axis_col}{axis color}
\item{axis}{add x or y axes? \code{TRUE}, \code{FALSE}, "\code{xy}"}
\item{ticks}{ticks if \code{TRUE} add ticks}
}
\description{
You should \url{import_econ_sans} first and also install the fonts on your
system before trying to use this theme.
You should \url{import_roboto_condensed} first and also install the fonts on your
system before trying to use this theme.
}
@ -94,7 +146,18 @@ There is an option \code{hrbrthemes.loadfonts} which -- if set to \code{TRUE} --
call \code{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.
There is an option \code{hrbrthemes.loadfonts} which -- if set to \code{TRUE} -- will
call \code{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.
}
\section{Why Econ Sans Condensed?}{
It's free, has tolerable kerning pairs and multiple weights. It's also different
than Arial Narrow and the fonts most folks use in ggplot2 charts.
}
\section{Why Roboto Condensed?}{
It's free, has tolerable kerning pairs and multiple weights. It's also different
@ -113,6 +176,35 @@ ggplot(mtcars, aes(mpg, wt)) +
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_es()
# seminal bar chart
# note: may need to make this font_es on Windows
update_geom_font_defaults(family=font_es_light)
count(mpg, class) \%>\%
ggplot(aes(class, n)) +
geom_col() +
geom_text(aes(label=n), nudge_y=3) +
labs(x="Fuel effiiency (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_es(grid="Y") +
theme(axis.text.y=element_blank())
}
\dontrun{
library(ggplot2)
library(dplyr)
# seminal scatterplot
ggplot(mtcars, aes(mpg, wt)) +
geom_point() +
labs(x="Fuel effiiency (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

Loading…
Cancel
Save