The goal of epinionDSB
is to provide easy-to-use templates for data
visualizations using the ggplot2
package and in line with the
Corporate Visual Identity (CVI) of DSB.
For this purpose, epinionDSB
functionality includes:
- a set of tailor-made
ggplot2
themes - custom-made color palettes for both discrete and continuous mapping variables
library(tidyverse)
library(epinionDSB)
ggplot(mtcars, aes(x = wt,
y = mpg)) +
geom_point(aes(color = factor(cyl)),
alpha = .85,
size = 4) +
facet_wrap(~ vs) +
dsb_theme_classic(gridlines = "both") +
color_dsb_d(reverse = T)
You can install the development version from GitHub with:
if(!require("devtools")) install.packages("devtools")
library(devtools)
devtools::install_github("jvieroe/epinionDSB")
epinionDSB::dsb_theme_*()
adds a tailormade theme to your ggplot2
objects. This makes them compliant with the DSB CVI and serves as a
time-saver when producing several plots.
Choose between three themes:
dsb_theme_classic()
, designed for most visualization purposes- arguments:
legend
,gridlines
,textcolor
- arguments:
dsb_theme_map()
, a very minimalist theme designed with geospatial maps in mind- arguments:
legend
,textcolor
- arguments:
dsb_theme_dust()
, to a large degree similar todsb_theme_classic()
but with a warmer, dusty feel- arguments:
legend
,gridlines
,textcolor
,background
- arguments:
Note that all ggplot2::theme()
settings inherent in dsb_theme*()
can
be overwritten by adding theme(...)
elements afterwards.
ggplot(mtcars, aes(x = wt,
y = mpg,
color = factor(am))) +
geom_point(size = 4) +
dsb_theme_classic(gridlines = "none") +
theme(legend.position = "right")
The dsb_theme_*()
functions do not impact the aesthetics of your plot
(e.g. color scales), only the ggplot2::theme()
elements.
You can apply DSB themed colors with epinionDSB
. Choose between the
following approaches:
The epinionDSB
package provides access to the color palette in the DSB
design manual. Specifically, the dsb_colvec()
function extracts HEX
codes by the color names.
# ... all DSB colors
dsb_colvec()
#> DSB Red DSB DarkBlue DSB LightBlue DSB Orange DSB LightGrey
#> "#B41730" "#00233C" "#5382B6" "#DF652C" "#A5A5A5"
#> DSB Purple DSB Teal DSB Turqoise DSB DarkGrey DSB LightGreen
#> "#6E3C6E" "#28767E" "#41BDBF" "#747474" "#88C988"
#> DSB Green DSB DarkGreen
#> "#1CA645" "#144E36"
# a selection of colors
dsb_colvec("DSB Red", "DSB DarkBlue")
#> DSB Red DSB DarkBlue
#> "#B41730" "#00233C"
We can use these to manually change our colors by either (1) using the
HEX codes provided by epinion::dsb_colvec()
directly or (2) by pasting
the names into the epinionDSB::dsb_grabcol()
function. Both functions
only accept colors in the Epinion color palette as inputs but the latter
is not sensitive to the inclusion of the Epinion prefix:
ggplot(mtcars, aes(x = wt,
y = mpg,
color = factor(am))) +
geom_point(size = 4) +
dsb_theme_dust(legend = FALSE) +
scale_colour_manual(values = c(dsb_grabcol("DSB Red"),
dsb_grabcol("DarkBlue")))
To provide a more verbose alternative, epinionDSB
contains
out-of-the-box functions to provide our ggplot2
figures with the DSB
color palette. These functions apply to both discrete and continuous
variable mapping and for both aes(color = )
and aes(fill = )
:
Discrete variables
color_dsb_d
: to use with theaes(color = x)
, where x is afactor
orcharacter
variablefill_dsb_d
: to use with theaes(fill = x)
, where x is afactor
orcharacter
variable
Continuous variables
color_dsb_c
: to use with theaes(color = x)
, where x is anumeric
orinteger
variablefill_dsb_c
: to use with theaes(fill = x)
, where x is anumeric
orinteger
variable
The main argument taken by all four functions is reverse
which allows
you to reverse the order of the color scale (default is FALSE
).
- When mapping
color_dsb_d()
orfill_dsb_d()
to a variable with only two levels, you can manually choose colors with theprimary
andsecondary
arguments. As withepinionDSB::dsb_grabcol()
colors can be specified with or without the DSB prefix
p1 <-
ggplot(mtcars, aes(x = wt,
y = mpg,
color = factor(am))) +
geom_point(size = 4) +
dsb_theme_classic(legend = FALSE) +
color_dsb_d(primary = "DSB Red",
secondary = "DSB Orange")
p2 <-
ggplot(mtcars, aes(x = wt,
y = mpg,
color = factor(am))) +
geom_point(size = 4) +
dsb_theme_classic(legend = FALSE) +
color_dsb_d(primary = "Red",
secondary = "Orange")
library(patchwork)
p1 / p2
epinionDSB
contains four different continuous color palettes:reds
,greens
,blues
, andteals
.- You choose between these with the
palette
option incolor_dsb_c()
andfill_dsb_c()
# continuous variable in aes()
p1 <-
ggplot(mtcars, aes(x = wt,
y = mpg,
color = disp)) +
geom_point(size = 4) +
dsb_theme_dust(background = TRUE,
legend = FALSE) +
color_dsb_c(palette = "greens")
p2 <-
ggplot(mtcars, aes(x = wt,
y = mpg,
color = disp)) +
geom_point(size = 4) +
dsb_theme_dust(background = TRUE,
legend = FALSE) +
color_dsb_c(palette = "greens",
reverse = TRUE)
p3 <-
ggplot(mtcars, aes(x = wt,
y = mpg,
color = disp)) +
geom_point(size = 4) +
dsb_theme_dust(background = TRUE,
legend = FALSE) +
color_dsb_c(palette = "reds")
p4 <-
ggplot(mtcars, aes(x = wt,
y = mpg,
color = disp)) +
geom_point(size = 4) +
dsb_theme_dust(background = TRUE,
legend = FALSE) +
color_dsb_c(palette = "reds",
reverse = TRUE)
library(patchwork)
library(repinion)
(p1 + p2) /
(p3 + p4) +
plot_annotation(theme =
theme(plot.background =
element_rect(color = NA,
fill = repinion::grabcol("Epinion WarmSand"),
)
)
)
- When mapping
color_dsb_d()
orfill_dsb_d()
to a variable with only two levels, you can manually choose colors with theprimary
andsecondary
arguments
Notice that *_dsb_c()
and *_dsb_d()
inherently calls
ggplot2::scale_*_gradientn()
and ggplot2::discrete_scale()
,
respectively. For that reason, additional arguments, such as guide
,
also apply. See
ggplot2::scale_colour_gradientn()
and
ggplot2::discrete_scale()
for details on additional arguments.
- The R Core Team for developing and maintaining the language
- Hadley Wickham (hadley) and the rest of
the team working on the amazing
ggplot2
package (and, frankly, the entiretidyverse
ecosystem) - Garrick Aden-Buie (gadenbuie) and Dr Simon Jackson (drsimonj) for inspiration
- Steffen Bank (steffenbank) for
convincing me to finally try to write my own
R
package