Type: | Package |
Title: | Additional Themes, Theme Components and Utilities for 'ggplot2' |
Version: | 0.8.7 |
Date: | 2024-03-03 |
Maintainer: | Bob Rudis <bob@rud.is> |
Description: | A compilation of extra 'ggplot2' themes, scales and utilities, including a spell check function for plot label fields and an overall emphasis on typography. A copy of the 'Google' font 'Roboto Condensed' is also included. |
Copyright: | file inst/COPYRIGHTS |
License: | MIT + file LICENSE |
Encoding: | UTF-8 |
Suggests: | testthat, dplyr, gridExtra, hunspell, stringi, gcookbook, clipr, vdiffr, svglite |
Depends: | R (≥ 4.0.0) |
Imports: | ggplot2 (≥ 3.4.0), grDevices, grid, scales, extrafont, tools, magrittr, gdtools, utils |
RoxygenNote: | 7.2.3 |
NeedsCompilation: | no |
Packaged: | 2024-03-03 11:07:16 UTC; hrbrmstr |
Author: | Bob Rudis |
Repository: | CRAN |
Date/Publication: | 2024-03-04 00:20:02 UTC |
Additional Themes and Theme Components for 'ggplot2'
Description
A compilation of extra themes and theme components for 'ggplot2' with an emphasis on typography.
Details
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".
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.
Author(s)
Bob Rudis (bob@rud.is)
Makes axis text labels flush on the ends
Description
A covenience function intended for basic, fixed-scale plots only (i.e. does not handle
free scales in facets).
You need to pass in a ggplot2 object to this function. It can't be +
'd in a chain
of geoms, coords, scales, themes, etc. It also builds the plot (but does not display
it) so if the plt takes a while (i.e. has lots of data or transforms) this will also
take a while.
Usage
flush_ticks(gg, flush = "XY", plot = TRUE, cat = TRUE)
Arguments
gg |
ggplot2 plot object |
flush |
either " |
plot |
if |
cat |
if |
Value
ggplot2 object with theme()
elements added
Note
Intended for basic, fixed-scale plots only (i.e. does not handle free scales in facets).
Arial Narrow font name R variable aliases
Description
font_an
== "Arial Narrow
"
Usage
font_an
Format
length 1 character vector
Econ Sans Condensed font name R variable aliases
Description
font_es
== "EconSansCndLig
"
font_es_bold
== "EconSansCndBol
"
font_es_light
== "EconSansCndLig
"
Usage
font_es
font_es_bold
font_es_light
Format
length 1 character vector
An object of class character
of length 1.
An object of class character
of length 1.
Note
font_es_bold
(a.k.a. "EconSansCndBol
") is not available on
Windows and will throw a warning if used in plots.
font_es_light
(a.k.a. "EconSansCndLig
") is not available on
Windows and will throw a warning if used in plots.
Goldman Sans font name R variable aliases
Description
font_gs
== "Goldman Sans Condensed
"
Usage
font_gs
Format
length 1 character vector
Inter font name R variable aliases
Description
font_inter_thin
== "Inter-Thin
"
font_inter_thin_italic
== "Inter-ThinItalic
"
font_inter_medium
== "Inter-Medium
"
font_inter_medium_italic
== "Inter-MediumItalic
"
font_inter_semibold
== "Inter-SemiBold
"
font_inter_bold
== "Inter-Bold
"
font_inter_italic
== "Inter-Italic
"
Usage
font_inter_thin
font_inter_thin_italic
font_inter_medium
font_inter_medium_italic
font_inter_semibold
font_inter_bold
font_inter_italic
Format
length 1 character vector
length 1 character vector
length 1 character vector
length 1 character vector
length 1 character vector
length 1 character vector
length 1 character vector
PlexSans font name R variable aliases
Description
font_ps
== "IBMPlexSans
"
font_ps_light
== "IBMPlexSans-Light
"
Usage
font_ps
font_ps_light
Format
length 1 character vector
An object of class character
of length 1.
Note
font_ps_light
(a.k.a. "IBMPlexSans-Light
") is not available on
Windows and will throw a warning if used in plots.
Public Sans font name R variable aliases
Description
font_pub
== "Public Sans
"
font_pub_bold
== "Public Sans Bold
"
font_pub_light
== "Public Sans Light
"
font_pub_thin
== "Public Sans Thin
"
Usage
font_pub
font_pub_bold
font_pub_light
font_pub_thin
Format
length 1 character vector
An object of class character
of length 1.
An object of class character
of length 1.
An object of class character
of length 1.
Note
font_pub_bold
(a.k.a. "Public Sans Bold
") is not available on
Windows and will throw a warning if used in plots.
Roboto Condensed font name R variable aliases
Description
font_rc
== "Roboto Condensed
"
font_fc_light
== "Roboto Condensed Light
"
Usage
font_rc
font_rc_light
Format
length 1 character vector
An object of class character
of length 1.
Note
font_rc_light
(a.k.a. "Roboto Condensed Light
") is not available on
Windows and will throw a warning if used in plots.
FT color palette
Description
FT color palette
Usage
ft_cols
ft_text_col
Format
An object of class list
of length 9.
An object of class character
of length 1.
Note
don't forget you can use scales::alpha()
with these colors
Change geom defaults from black to custom lights for the FT theme
Description
Change geom defaults from black to custom lights for the FT theme
Usage
ft_geom_defaults()
A bright qualitative color palette
Description
A bright qualitative color palette
Usage
ft_pal()
Examples
library(scales)
scales::show_col(ft_pal()(8))
Spell check ggplot2 plot labels
Description
Due to the way ggplot2 objects are created, this has to be used in a standalone context.
Usage
gg_check(gg, dict, ignore)
Arguments
gg |
ggplot2 object |
dict |
a dictionary object or string which can be passed to hunspell::dictionary.
Defaults to |
ignore |
character vector with additional approved words added to the dictionary.
Defaults to |
Details
Current functionality only looks for misspelled words in the labels of ggplot2 objects. When misspelled words are found, a message is printed with the words and the label that they are in. No messages will be printed if there are no misspelled words.
Value
the object that was passed in
Examples
library(ggplot2)
df <- data.frame(x=c(20, 25, 30), y=c(4, 4, 4), txt=c("One", "Two", "Three"))
# not piping
ggplot(mtcars, aes(mpg, wt)) +
geom_point() +
labs(x="This is some txt", y="This is more text",
title="Thisy is a titlle",
subtitle="This is a subtitley",
caption="This is a captien") -> gg
gg_check(gg)
hrbrthemes exported operators
Description
The following functions are imported and then re-exported from the hrbrthemes package to enable use of the magrittr pipe operator with no additional library calls
Import Roboto Condensed font for use in charts
Description
Roboto Condensed is a trademark of Google.
Usage
import_econ_sans()
Details
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.
Import Goldman Sans font for use in charts
Description
Goldman Sans is a trademark of Goldman Sachs and distributed under the Goldman Sachs Restricted Font License
Usage
import_goldman_sans()
Details
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.
Import Inter font for use in charts
Description
Inter is Copyright (c) 2016-2024 The Inter Project Authors
Usage
import_inter()
Details
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.
Import IBM Plex Sans font for use in charts
Description
IBM Plex Sans is a trademark of IBM and distributed under the SIL Open Font License, Version 1.1.
Usage
import_plex_sans()
Details
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.
Import Public Sans font for use in charts
Description
Public Sans is Copyright 2015 Impallari Type and licensed under the SIL Open Font License, Version 1.1
Usage
import_public_sans()
Details
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.
Import Roboto Condensed font for use in charts
Description
Roboto Condensed is a trademark of Google.
Usage
import_roboto_condensed()
Details
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.
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.
A muted, qualitative color palette
Description
A muted, qualitative color palette
Usage
ipsum_pal()
Examples
library(scales)
scales::show_col(ipsum_pal()(9))
Change geom defaults from black to white for the modern theme
Description
Change geom defaults from black to white for the modern theme
Usage
modern_geom_defaults()
Discrete color & fill scales based on the FT palette
Description
See ft_pal()
.
Usage
scale_colour_ft(...)
scale_color_ft(...)
scale_fill_ft(...)
Arguments
... |
Arguments passed on to
|
Discrete color & fill scales based on the ipsum palette
Description
See ipsum_pal()
.
Usage
scale_colour_ipsum(...)
scale_color_ipsum(...)
scale_fill_ipsum(...)
Arguments
... |
Arguments passed on to
|
X & Y scales with opinionated pre-sets for percent & comma label formats
Description
The _comma
ones set comma format for axis text and expand=c(0,0)
(you need to set limits).
Usage
scale_x_percent(
name = waiver(),
breaks = waiver(),
minor_breaks = waiver(),
guide = waiver(),
n.breaks = NULL,
labels,
limits = NULL,
expand = c(0.01, 0),
oob = censor,
na.value = NA_real_,
trans = "identity",
transform = "identity",
position = "bottom",
sec.axis = waiver(),
accuracy = 1,
scale = 100,
prefix = "",
suffix = "%",
big.mark = " ",
decimal.mark = ".",
trim = TRUE,
...
)
scale_y_percent(
name = waiver(),
breaks = waiver(),
minor_breaks = waiver(),
guide = waiver(),
n.breaks = NULL,
labels,
limits = NULL,
expand = c(0.01, 0),
oob = censor,
na.value = NA_real_,
trans = "identity",
transform = "identity",
position = "left",
sec.axis = waiver(),
accuracy = 1,
scale = 100,
prefix = "",
suffix = "%",
big.mark = " ",
decimal.mark = ".",
trim = TRUE,
...
)
scale_x_comma(
name = waiver(),
breaks = waiver(),
minor_breaks = waiver(),
guide = waiver(),
n.breaks = NULL,
labels,
limits = NULL,
expand = c(0.01, 0),
oob = censor,
na.value = NA_real_,
trans = "identity",
transform = "identity",
position = "bottom",
sec.axis = waiver(),
accuracy = 1,
scale = 1,
prefix = "",
suffix = "",
big.mark = ",",
decimal.mark = ".",
trim = TRUE,
...
)
scale_y_comma(
name = waiver(),
breaks = waiver(),
minor_breaks = waiver(),
guide = waiver(),
n.breaks = NULL,
labels,
limits = NULL,
expand = c(0.01, 0),
oob = censor,
na.value = NA_real_,
trans = "identity",
transform = "identity",
position = "left",
sec.axis = waiver(),
accuracy = 1,
scale = 1,
prefix = "",
suffix = "",
big.mark = ",",
decimal.mark = ".",
trim = TRUE,
...
)
Arguments
name |
The name of the scale. Used as axis or legend title. If
|
breaks |
One of:
|
minor_breaks |
One of:
|
guide |
guide A function used to create a guide or its name. See |
n.breaks |
An integer guiding the number of major breaks. The algorithm may choose a
slightly different number to ensure nice break labels. Will only have an effect if
|
labels |
Specifying overrides the default format (i.e. you really don't
want to do that). |
limits |
A numeric vector of length two providing limits of the scale.
Use |
expand |
same as in ggplot2 |
oob |
Function that handles limits outside of the scale limits (out of bounds). The default replaces out of bounds values with NA. |
na.value |
If |
trans |
(DEPRECATED) Either the name of a transformation object, or the object itself. Built-in transformations include "asn", "atanh", "boxcox", "exp", "identity", "log", "log10", "log1p", "log2", "logit", "probability", "probit", "reciprocal", "reverse" and "sqrt". |
transform |
Either the name of a transformation object, or the object itself. Built-in transformations include "asn", "atanh", "boxcox", "exp", "identity", "log", "log10", "log1p", "log2", "logit", "probability", "probit", "reciprocal", "reverse" and "sqrt". |
position |
The position of the axis. "left" or "right" for vertical scales, "top" or "bottom" for horizontal scales |
sec.axis |
specify a secondary axis |
accuracy , scale , prefix , suffix , big.mark , decimal.mark , trim |
See [scales::comma_format()] or [scales::percent_format()] |
... |
passed on to [scales::comma_format()] or [scales::percent_format()] |
Details
The _percent
ones set percent format for axis text and expand=c(0,0)
(you need to set limits).
A precise & pristine ggplot2 theme with opinionated defaults and an emphasis on typoghraphy
Description
You should import_roboto_condensed()
first and also install the fonts on your
system before trying to use this theme.
Usage
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,
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),
grid = TRUE,
axis = FALSE,
ticks = FALSE
)
theme_modern_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),
grid = TRUE,
axis = FALSE,
ticks = FALSE
)
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 |
plot_margin |
plot margin (specify with ggplot2::margin) |
grid |
panel grid ( |
axis |
add x or y axes? |
ticks |
ticks if |
panel_spacing |
panel spacing (use |
grid_col |
grid color |
axis_col |
axis color |
Details
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.
Why Roboto 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.
Examples
## Not run:
library(ggplot2)
library(dplyr)
# 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
update_geom_font_defaults(family=font_rc_light)
count(mpg, class) %>%
ggplot(aes(class, n)) +
geom_col() +
geom_text(aes(label=n), 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())
## End(Not run)
A precise & pristine ggplot2 theme with opinionated defaults and an emphasis on typography
Description
Also has a "dark" / "modern" version for the new RStudio theme
Usage
theme_ipsum(
base_family = "Arial Narrow",
base_size = 11.5,
plot_title_family = base_family,
plot_title_size = 18,
plot_title_face = "bold",
plot_title_margin = 10,
subtitle_family = base_family,
subtitle_size = 12,
subtitle_face = "plain",
subtitle_margin = 15,
strip_text_family = base_family,
strip_text_size = 12,
strip_text_face = "plain",
caption_family = base_family,
caption_size = 9,
caption_face = "italic",
caption_margin = 10,
axis_text_size = base_size,
axis_title_family = subtitle_family,
axis_title_size = 9,
axis_title_face = "plain",
axis_title_just = "rt",
plot_margin = margin(30, 30, 30, 30),
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 title family, face, size and margi |
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 |
plot_margin |
plot margin (specify with |
grid_col , axis_col |
grid & axis colors; both default to |
grid |
panel grid ( |
axis |
add x or y axes? |
ticks |
ticks if |
Why Arial Narrow?
First and foremost, Arial Narrow is generally installed by default or readily available on any modern system, so it's "free"-ish; plus, it is a condensed font with solid default kerning pairs and geometric numbers.
Building upon theme_ipsum
The function is setup in such a way that you can customize your own one by just wrapping the call and changing the parameters. See source for examples.
Gotchas
There are distinctions between font names and various devices. Names that work
for display graphics devices and bitmap ones such as png
may not work well
for PostScript or PDF ones. You may need two versions of a font-based
theme function for them to work in a particular situation. This situation
usually only arises when using a newer font with many weights but somewhat
irregular internal font name patterns.
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.
Examples
## Not run:
library(ggplot2)
library(dplyr)
# 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()
# seminal bar chart
update_geom_font_defaults()
count(mpg, class) %>%
ggplot(aes(class, n)) +
geom_col() +
geom_text(aes(label=n), 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(grid="Y") +
theme(axis.text.y=element_blank())
## End(Not run)
A precise & pristine ggplot2 theme with opinionated defaults and an emphasis on typoghraphy
Description
You should import_econ_sans()
first and install the fonts on your
system before trying to use this theme.
Usage
theme_ipsum_es(
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
"EconSansCndLig",
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
)
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 |
plot_margin |
plot margin (specify with ggplot2::margin) |
panel_spacing |
panel spacing (use |
grid_col |
grid color |
grid |
panel grid ( |
axis_col |
axis color |
axis |
add x or y axes? |
ticks |
ticks if |
Details
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.
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.
Examples
## Not run:
library(ggplot2)
library(dplyr)
# 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_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 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_es(grid="Y") +
theme(axis.text.y=element_blank())
## End(Not run)
A precise & pristine ggplot2 theme with opinionated defaults and an emphasis on typoghraphy
Description
You should import_goldman_sans()
first and install the fonts on your
system before trying to use this theme.
Usage
theme_ipsum_gs(
base_family = "Goldman Sans Condensed",
base_size = 11.5,
plot_title_family = "Goldman Sans Condensed",
plot_title_size = 18,
plot_title_face = "bold",
plot_title_margin = 10,
subtitle_family = if (.Platform$OS.type == "windows") "Goldman Sans Condensed" else
"Goldman Sans Condensed",
subtitle_size = 13,
subtitle_face = "plain",
subtitle_margin = 15,
strip_text_family = "Goldman Sans Condensed",
strip_text_size = 12,
strip_text_face = "bold",
caption_family = if (.Platform$OS.type == "windows") "Goldman Sans Condensed" else
"Goldman Sans Condensed",
caption_size = 9,
caption_face = "plain",
caption_margin = 10,
axis_text_size = 9,
axis_title_family = base_family,
axis_title_size = 9,
axis_title_face = "plain",
axis_title_just = "rt",
plot_margin = margin(30, 30, 30, 30),
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 |
plot_margin |
plot margin (specify with ggplot2::margin) |
grid_col |
grid color |
grid |
panel grid ( |
axis_col |
axis color |
axis |
add x or y axes? |
ticks |
ticks if |
Details
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.
Why Goldman Sans?
Google "goldman sans design system"
Examples
## Not run:
library(ggplot2)
library(dplyr)
# 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_gs()
# seminal bar chart
update_geom_font_defaults(family=font_gs_light)
count(mpg, class) %>%
ggplot(aes(class, n)) +
geom_col() +
geom_text(aes(label=n), 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_gs(grid="Y") +
theme(axis.text.y=element_blank())
## End(Not run)
A precise & pristine ggplot2 theme with opinionated defaults and an emphasis on typoghraphy
Description
You should import_inter()
first and install the fonts on your
system before trying to use this theme.
Usage
theme_ipsum_inter(
base_family = "Inter-Medium",
base_size = 10,
plot_title_family = "Inter-Bold",
plot_title_size = 16,
plot_title_face = "bold",
plot_title_margin = 8,
subtitle_family = "Inter-Light",
subtitle_size = 12,
subtitle_face = "plain",
subtitle_margin = 13,
strip_text_family = "Inter-SemiBold",
strip_text_size = 12,
strip_text_face = "bold",
caption_family = "Inter-Thin",
caption_size = 9,
caption_face = "plain",
caption_margin = 10,
axis_text_family = "Inter-Light",
axis_text_face = "plain",
axis_text_size = 9,
axis_title_family = base_family,
axis_title_size = 9,
axis_title_face = "plain",
axis_title_just = "rt",
plot_margin = margin(30, 30, 30, 30),
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_family , axis_text_face |
axis text font family and face |
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 |
plot_margin |
plot margin (specify with ggplot2::margin) |
grid_col |
grid color |
grid |
panel grid ( |
axis_col |
axis color |
axis |
add x or y axes? |
ticks |
ticks if |
Details
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.
Why Inter?
Google "inter font".
Examples
## Not run:
library(ggplot2)
library(dplyr)
# 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_inter()
# seminal bar chart
update_geom_font_defaults(family=font_inter_medium)
count(mpg, class) %>%
ggplot(aes(class, n)) +
geom_col() +
geom_text(aes(label=n), 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_inter(grid="Y") +
theme(axis.text.y=element_blank())
## End(Not run)
A precise & pristine ggplot2 theme with opinionated defaults and an emphasis on typoghraphy
Description
You should import_plex_sans()
first and install the fonts on your
system before trying to use this theme.
Usage
theme_ipsum_ps(
base_family = "IBMPlexSans",
base_size = 11.5,
plot_title_family = "IBMPlexSans-Bold",
plot_title_size = 18,
plot_title_face = "plain",
plot_title_margin = 10,
subtitle_family = if (.Platform$OS.type == "windows") "IBMPlexSans" else
"IBMPlexSans-Light",
subtitle_size = 13,
subtitle_face = "plain",
subtitle_margin = 15,
strip_text_family = "IBMPlexSans-Medium",
strip_text_size = 12,
strip_text_face = "plain",
caption_family = if (.Platform$OS.type == "windows") "IBMPlexSans" else
"IBMPlexSans-Thin",
caption_size = 9,
caption_face = "plain",
caption_margin = 10,
axis_text_size = 9,
axis_title_family = base_family,
axis_title_size = 9,
axis_title_face = "plain",
axis_title_just = "rt",
plot_margin = margin(30, 30, 30, 30),
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 |
plot_margin |
plot margin (specify with ggplot2::margin) |
grid_col |
grid color |
grid |
panel grid ( |
axis_col |
axis color |
axis |
add x or y axes? |
ticks |
ticks if |
Details
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.
Why IBM Plex Sans?
It's free, has tolerable kerning pairs and multiple weights. It's also different "not Helvetica".
Examples
## Not run:
library(ggplot2)
library(dplyr)
# 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
update_geom_font_defaults(family=font_rc_light)
count(mpg, class) %>%
ggplot(aes(class, n)) +
geom_col() +
geom_text(aes(label=n), 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())
## End(Not run)
A precise & pristine ggplot2 theme with opinionated defaults and an emphasis on typoghraphy
Description
You should import_public_sans()
first and install the fonts on your
system before trying to use this theme.
Usage
theme_ipsum_pub(
base_family = "Public Sans",
base_size = 10.5,
plot_title_family = if (.Platform$OS.type == "windows") "Public Sans" else
"Public Sans Bold",
plot_title_size = 18,
plot_title_face = "bold",
plot_title_margin = 10,
subtitle_family = if (.Platform$OS.type == "windows") "Public Sans Thin" else
"Public Sans Thin",
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") "Public Sans Thin" else
"Public Sans Thin",
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),
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 |
plot_margin |
plot margin (specify with ggplot2::margin) |
grid_col |
grid color |
grid |
panel grid ( |
axis_col |
axis color |
axis |
add x or y axes? |
ticks |
ticks if |
Details
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.
Why Public Sans?
Examples
## Not run:
library(ggplot2)
library(dplyr)
# 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_pub()
# seminal bar chart
update_geom_font_defaults(family=font_pub)
count(mpg, class) %>%
ggplot(aes(class, n)) +
geom_col() +
geom_text(aes(label=n), 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_pub(grid="Y") +
theme(axis.text.y=element_blank())
## End(Not run)
Update matching font defaults for text geoms
Description
Updates [ggplot2::geom_label] and [ggplot2::geom_text] font defaults
Usage
update_geom_font_defaults(
family = "Arial Narrow",
face = "plain",
size = 3.5,
color = "#2b2b2b"
)
Arguments
family , face , size , color |
font family name, face, size and color |