Compare commits
No commits in common. 'master' and '0.7.0' have entirely different histories.
@ -1,3 +0,0 @@ |
|||
# These are supported funding model platforms |
|||
|
|||
patreon: hrbrmstr |
@ -1,2 +1,2 @@ |
|||
This package was submitted to CRAN on 2020-03-06. |
|||
Once it is accepted, delete this file and tag the release (commit a599f17a1d). |
|||
This package was submitted to CRAN on 2019-01-20. |
|||
Once it is accepted, delete this file and tag the release (commit e42d295063). |
|||
|
@ -1,245 +0,0 @@ |
|||
#' 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 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()) |
|||
#' } |
|||
theme_ipsum_es <- 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 "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) { |
|||
|
|||
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() { |
|||
|
|||
es_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 <- "EconSansCndBol" |
|||
|
|||
#' @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" |
|||
|
@ -1,209 +0,0 @@ |
|||
#' A precise & pristine [ggplot2] theme with opinionated defaults and an emphasis on typoghraphy |
|||
#' |
|||
#' You should [import_goldman_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 Goldman Sans?: |
|||
#' See <https://design.gs.com/d/story/goldman-sans/>. |
|||
#' |
|||
#' @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 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 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()) |
|||
#' } |
|||
theme_ipsum_gs <- function( |
|||
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) { |
|||
|
|||
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()) |
|||
|
|||
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()) |
|||
} |
|||
|
|||
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.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(panel.spacing=grid::unit(2, "lines")) |
|||
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 <- ret + theme(plot.margin=plot_margin) |
|||
|
|||
ret |
|||
|
|||
} |
|||
|
|||
#' Import Goldman Sans font for use in charts |
|||
#' |
|||
#' Goldman Sans is a trademark of Goldman Sachs and distributed under the |
|||
#' [Goldman Sachs Restricted Font License](https://design.gs.com/d/legal/goldman-sans-license/). |
|||
#' |
|||
#' 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_goldman_sans <- function() { |
|||
|
|||
gs_font_dir <- system.file("fonts", "goldman-sans", package="hrbrthemes") |
|||
|
|||
# suppressWarnings(suppressMessages(extrafont::font_import(gs_font_dir, prompt=FALSE))) |
|||
# |
|||
# message( |
|||
# sprintf( |
|||
# "You will likely need to install these fonts on your system as well.\n\nYou can find them in [%s]", |
|||
# gs_font_dir) |
|||
# ) |
|||
|
|||
} |
|||
|
|||
#' @rdname GoldmanSans |
|||
#' @md |
|||
#' @title Goldman Sans font name R variable aliases |
|||
#' @description `font_gs` == "`Goldman Sans Condensed`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_gs <- "Goldman Sans Condensed" |
|||
|
@ -1,259 +0,0 @@ |
|||
#' A precise & pristine [ggplot2] theme with opinionated defaults and an emphasis on typoghraphy |
|||
#' |
|||
#' You should [import_inter()] 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 Inter?: |
|||
#' See <https://design.gs.com/d/story/goldman-sans/>. |
|||
#' |
|||
#' @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 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 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()) |
|||
#' } |
|||
theme_ipsum_inter <- function( |
|||
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) { |
|||
|
|||
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()) |
|||
|
|||
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()) |
|||
} |
|||
|
|||
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.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(panel.spacing=grid::unit(2, "lines")) |
|||
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 <- ret + theme(plot.margin=plot_margin) |
|||
|
|||
ret |
|||
|
|||
} |
|||
|
|||
#' Import Inter font for use in charts |
|||
#' |
|||
#' Inter is Copyright (c) 2016-2020 The Inter Project Authors |
|||
#' (<https://rsms.me/inter/>). |
|||
#' |
|||
#' 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_inter <- function() { |
|||
|
|||
inter_font_dir <- system.file("fonts", "inter", package="hrbrthemes") |
|||
|
|||
suppressWarnings(suppressMessages(extrafont::font_import(inter_font_dir, prompt=FALSE))) |
|||
|
|||
message( |
|||
sprintf( |
|||
"You will likely need to install these fonts on your system as well.\n\nYou can find them in [%s]", |
|||
inter_font_dir) |
|||
) |
|||
|
|||
} |
|||
|
|||
|
|||
#' @rdname Inter |
|||
#' @md |
|||
#' @title Inter font name R variable aliases |
|||
#' @description `font_inter_thin` == "`Inter-Thin`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_inter_thin <- "Inter-Thin" |
|||
|
|||
#' @rdname Inter |
|||
#' @md |
|||
#' @title Inter font name R variable aliases |
|||
#' @description `font_inter_thin_italic` == "`Inter-ThinItalic`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_inter_thin_italic <- "Inter-ThinItalic" |
|||
|
|||
#' @rdname Inter |
|||
#' @md |
|||
#' @title Inter font name R variable aliases |
|||
#' @description `font_inter_medium` == "`Inter-Medium`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_inter_medium <- "Inter-Medium" |
|||
|
|||
#' @rdname Inter |
|||
#' @md |
|||
#' @title Inter font name R variable aliases |
|||
#' @description `font_inter_medium_italic` == "`Inter-MediumItalic`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_inter_medium_italic <- "Inter-MediumItalic" |
|||
|
|||
#' @rdname Inter |
|||
#' @md |
|||
#' @title Inter font name R variable aliases |
|||
#' @description `font_inter_semibold` == "`Inter-SemiBold`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_inter_semibold <- "Inter-SemiBold" |
|||
|
|||
#' @rdname Inter |
|||
#' @md |
|||
#' @title Inter font name R variable aliases |
|||
#' @description `font_inter_bold` == "`Inter-Bold`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_inter_bold <- "Inter-Bold" |
|||
|
|||
#' @rdname Inter |
|||
#' @md |
|||
#' @title Inter font name R variable aliases |
|||
#' @description `font_inter_italic` == "`Inter-Italic`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_inter_italic <- "Inter-Italic" |
@ -1,228 +0,0 @@ |
|||
#' A precise & pristine [ggplot2] theme with opinionated defaults and an emphasis on typoghraphy |
|||
#' |
|||
#' You should [import_public_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 Public Sans?: |
|||
#' |
|||
#' See [the design principles](https://github.com/uswds/public-sans#design-principles). |
|||
#' |
|||
#' @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 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 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()) |
|||
#' } |
|||
theme_ipsum_pub <- function( |
|||
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) { |
|||
|
|||
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()) |
|||
|
|||
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()) |
|||
} |
|||
|
|||
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.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(panel.spacing=grid::unit(2, "lines")) |
|||
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 <- ret + theme(plot.margin=plot_margin) |
|||
|
|||
ret |
|||
|
|||
} |
|||
|
|||
#' Import Public Sans font for use in charts |
|||
#' |
|||
#' Public Sans is Copyright 2015 Impallari Type and licensed under the |
|||
#' SIL Open Font License, Version 1.1 |
|||
#' |
|||
#' 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_public_sans <- function() { |
|||
|
|||
pub_font_dir <- system.file("fonts", "public-sans", package="hrbrthemes") |
|||
|
|||
# suppressWarnings(suppressMessages(extrafont::font_import(pub_font_dir, prompt=FALSE))) |
|||
# |
|||
# message( |
|||
# sprintf( |
|||
# "You will likely need to install these fonts on your system as well.\n\nYou can find them in [%s]", |
|||
# pub_font_dir) |
|||
# ) |
|||
|
|||
} |
|||
|
|||
#' @rdname PublicSans |
|||
#' @md |
|||
#' @title Public Sans font name R variable aliases |
|||
#' @description `font_pub` == "`Public Sans`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_pub <- "Public Sans" |
|||
|
|||
#' @rdname PublicSans |
|||
#' @md |
|||
#' @note `font_pub_bold` (a.k.a. "`Public Sans Bold`") is not available on |
|||
#' Windows and will throw a warning if used in plots. |
|||
#' @description `font_pub_bold` == "`Public Sans Bold`" |
|||
#' @export |
|||
font_pub_bold <- "Public Sans Bold" |
|||
|
|||
#' @rdname PublicSans |
|||
#' @md |
|||
#' @description `font_pub_light` == "`Public Sans Light`" |
|||
#' @export |
|||
font_pub_light <- "Public Sans Light" |
|||
|
|||
#' @rdname PublicSans |
|||
#' @md |
|||
#' @description `font_pub_thin` == "`Public Sans Thin`" |
|||
#' @export |
|||
font_pub_thin <- "Public Sans Thin" |
|||
|
@ -1,191 +1,191 @@ |
|||
#' A precise & pristine [ggplot2] theme with opinionated defaults and an emphasis on typography |
|||
#' |
|||
#' Also has a "dark" / "modern" version for the new RStudio theme |
|||
#' |
|||
#' @md |
|||
#' @section 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. |
|||
#' |
|||
#' @section 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. |
|||
#' |
|||
#' @section 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. |
|||
#' |
|||
#' @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 title family, face, size and margi |
|||
#' @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 justification, one of `[blmcrt]` |
|||
#' @param plot_margin plot margin (specify with `ggplot2::margin()`) |
|||
#' @param grid_col,axis_col grid & axis colors; both default to `#cccccc` |
|||
#' @param grid panel grid (`TRUE`, `FALSE`, or a combination of `X`, `x`, `Y`, `y`) |
|||
#' @param axis_text_size font size of axis text |
|||
#' @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 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()) |
|||
#' } |
|||
theme_ipsum <- function(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) { |
|||
|
|||
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()) |
|||
|
|||
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()) |
|||
} |
|||
|
|||
if (inherits(axis, "character") | axis == TRUE) { |
|||
ret <- ret + theme(axis.line=element_line(color="#2b2b2b", 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.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(panel.spacing=grid::unit(2, "lines")) |
|||
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 <- ret + theme(plot.margin=plot_margin) |
|||
|
|||
ret |
|||
|
|||
} |
|||
|
|||
#' Update matching font defaults for text geoms |
|||
#' |
|||
#' Updates [ggplot2::geom_label] and [ggplot2::geom_text] font defaults |
|||
#' |
|||
#' @param family,face,size,color font family name, face, size and color |
|||
#' @export |
|||
update_geom_font_defaults <- function(family="Arial Narrow", face="plain", size=3.5, |
|||
color = "#2b2b2b") { |
|||
update_geom_defaults("text", list(family=family, face=face, size=size, color=color)) |
|||
update_geom_defaults("label", list(family=family, face=face, size=size, color=color)) |
|||
} |
|||
|
|||
#' @rdname ArialNarrow |
|||
#' @md |
|||
#' @title Arial Narrow font name R variable aliases |
|||
#' @description `font_an` == "`Arial Narrow`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_an <- "Arial Narrow" |
|||
#' A precise & pristine [ggplot2] theme with opinionated defaults and an emphasis on typography |
|||
#' |
|||
#' Also has a "dark" / "modern" version for the new RStudio theme |
|||
#' |
|||
#' @md |
|||
#' @section 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. |
|||
#' |
|||
#' @section 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. |
|||
#' |
|||
#' @section 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. |
|||
#' |
|||
#' @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 title family, face, size and margi |
|||
#' @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 justification, one of `[blmcrt]` |
|||
#' @param plot_margin plot margin (specify with [ggplot2::margin()]) |
|||
#' @param grid_col,axis_col grid & axis colors; both default to `#cccccc` |
|||
#' @param grid panel grid (`TRUE`, `FALSE`, or a combination of `X`, `x`, `Y`, `y`) |
|||
#' @param axis_text_size font size of axis text |
|||
#' @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() |
|||
#' |
|||
#' # 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()) |
|||
#' } |
|||
theme_ipsum <- function(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) { |
|||
|
|||
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()) |
|||
|
|||
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()) |
|||
} |
|||
|
|||
if (inherits(axis, "character") | axis == TRUE) { |
|||
ret <- ret + theme(axis.line=element_line(color="#2b2b2b", 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.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(panel.spacing=grid::unit(2, "lines")) |
|||
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 <- ret + theme(plot.margin=plot_margin) |
|||
|
|||
ret |
|||
|
|||
} |
|||
|
|||
#' Update matching font defaults for text geoms |
|||
#' |
|||
#' Updates [ggplot2::geom_label] and [ggplot2::geom_text] font defaults |
|||
#' |
|||
#' @param family,face,size,color font family name, face, size and color |
|||
#' @export |
|||
update_geom_font_defaults <- function(family="Arial Narrow", face="plain", size=3.5, |
|||
color = "#2b2b2b") { |
|||
update_geom_defaults("text", list(family=family, face=face, size=size, color=color)) |
|||
update_geom_defaults("label", list(family=family, face=face, size=size, color=color)) |
|||
} |
|||
|
|||
#' @rdname ArialNarrow |
|||
#' @md |
|||
#' @title Arial Narrow font name R variable aliases |
|||
#' @description `font_an` == "`Arial Narrow`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_an <- "Arial Narrow" |
|||
|
@ -1,179 +0,0 @@ |
|||
|
|||
#' @rdname TinyHand |
|||
#' @md |
|||
#' @title TinyHand Web font name R variable aliases |
|||
#' @description `font_th` == "`BF Tiny Hand`" |
|||
#' @format length 1 character vector |
|||
#' @export |
|||
font_th <- "BFTinyHand-Regular" |
|||
|
|||
#' Something you should never use. |
|||
#' |
|||
#' You should [import_tinyhand()] 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 Titillium Web?: |
|||
#' 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 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 |
|||
theme_tinyhand <- function( |
|||
base_family=font_th, base_size = 10.5, |
|||
plot_title_family=font_th, |
|||
plot_title_size = 18, |
|||
plot_title_face="bold", |
|||
plot_title_margin = 10, |
|||
subtitle_family=font_th, |
|||
subtitle_size = 13, |
|||
subtitle_face = "plain", |
|||
subtitle_margin = 15, |
|||
strip_text_family = base_family, |
|||
strip_text_size = 12, |
|||
strip_text_face = "plain", |
|||
caption_family=font_th, |
|||
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) { |
|||
|
|||
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()) |
|||
|
|||
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()) |
|||
} |
|||
|
|||
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.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(panel.spacing=grid::unit(2, "lines")) |
|||
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 <- ret + theme(plot.margin=plot_margin) |
|||
|
|||
ret |
|||
|
|||
} |
|||
|
|||
#' Import Titillium Web font for use in charts |
|||
#' |
|||
#' Titillium Web 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_tinyhand <- function() { |
|||
|
|||
th_font_dir <- system.file("fonts", "tinyhand", package="hrbrthemes") |
|||
|
|||
# suppressWarnings(suppressMessages(extrafont::font_import(th_font_dir, prompt=FALSE))) |
|||
# |
|||
# message( |
|||
# sprintf( |
|||
# "You will likely need to install these fonts on your system as well.\n\nYou can find them in [%s]", |
|||
# th_font_dir) |
|||
# ) |
|||
|
|||
} |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 158 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 78 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 206 KiB |
After Width: | Height: | Size: 213 KiB |
After Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 212 KiB |
Before Width: | Height: | Size: 213 KiB |
Before Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 155 KiB |
Before Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 61 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 75 KiB |
After Width: | Height: | Size: 83 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 129 KiB |
After Width: | Height: | Size: 92 KiB |
@ -1,13 +1,23 @@ |
|||
## Test environments |
|||
* local OS X install, R 3.6.3 |
|||
* ubuntu 14.04 (on travis-ci), R 3.6.3 |
|||
|
|||
* local OS X install + travis-ci, R 3.5.0 & devel (Travis is currently failing |
|||
- if folks check - due to a missing CRAN mirror component in RStudio's CRAN |
|||
mirror for Travis) |
|||
* ubuntu 14.04 (on travis-ci), R oldrel, current, devel |
|||
* win-builder (devel and release) |
|||
* rhub::check_for_cran() |
|||
|
|||
## R CMD check results |
|||
|
|||
0 errors | 0 warnings | 0 notes |
|||
0 errors | 0 warnings | 0 notes%>% hrbrthemes exported operators |
|||
|
|||
## Reverse dependencies |
|||
|
|||
* This is an update |
|||
- [BAwiR, fontHind, fontMPlus, ggstatsplot, mlr] all OK |
|||
|
|||
i think i fixed the named package link in the revdep. |
|||
--- |
|||
|
|||
- new fonts, a new white theme and a new dark theme |
|||
- fixed typos in documentation |
|||
- resubmitted after errors noted on https://win-builder.r-project.org/incoming_pretest/hrbrthemes_0.6.0_20190120_223916/Windows/00check.log |
|||
- re-re-submitted (gdtools in the right place now) |