The goal of the arcadiathemeR package is to create ggplot2-style plots in R that (mostly) adhere to Arcadia Science style guidelines.
You can install arcadiathemeR from Github using the remotes package.
If you do not have this package installed you will need to do so before
installing the arcadiathemeR package.
# install.packages("remotes")
remotes::install_github("Arcadia-Science/arcadiathemeR")To use the custom fonts you need to download the TTF formatted font
files and place in the Users/YOURUSERNAME/Library/Fonts/ directory.
You can also download the fonts and double click on them to install
using FontBook with Mac OS. Check out the Arcadia Science Brand Assets
page in Notion to find these. This should only need to be performed once
even if the package is updated over time. If the custom font isn’t
available then the sans font type will be used insetad. These steps
and functionality have only been confirmed to work on Mac OS.
To access the functions in the arcadiathemeR package, load with:
library(arcadiathemeR)The arcadiathemeR package is modeled after the ggthemes
package, layering on the plot theme
and color palettes in the same fashion as the ggthemes package. There
are two main functions to layer on top of existing ggplot2 plots, the
theme_arcadia function and the scale function, where the particular
scale function used depends on if you call color or fill:
library(ggplot2)
library(arcadiathemeR)
#> Loading Suisse fonts...
#> All custom fonts 'Suisse Int'l, Suisse Int'l Semi Bold, Suisse Int'l Medium, Suisse Int'l Mono' are successfully loaded.
ggplot(data=mtcars, aes(x=hp, y=mpg, color=as.factor(cyl))) +
geom_point(size=2.5) +
theme_arcadia(x_axis_type = "numerical") +
scale_color_arcadia(palette_name = "primary")By default the theme_arcadia() function assumes that both axes are
numerical data. Since we have different font and plot styles for
categorical data, you can specify if the axis is categorical with:
ggplot(data=diamonds, aes(x=cut, fill=cut)) +
geom_bar() +
theme_arcadia(x_axis_type = "categorical") +
scale_fill_arcadia(palette_name = "secondary", reverse = TRUE) +
scale_y_continuous(expand=c(0,0)) + # removes whitespace between axis and bars
theme(legend.position = "bottom")You can also select different indices of colors from the palettes within
the scale function:
ggplot(mtcars, aes(x = hp, fill = as.factor(cyl))) +
geom_density(alpha = 0.8, linewidth = 0) + # remove border line from filled-in density plots
theme_arcadia() +
clean_plot() +
scale_fill_arcadia(palette_name = "blue_shades", start=2, end=5) Sometimes you’ll want to add additional Arcadia styling to your plots.
The clean_plot() ggplot extension function handles this styling for
you. The function will automatically (1) capitalize the first word of
your axis titles, (2) remove whitespace between your axis and data if
your plot is a bar plot, histogram, density plot, or heatmap, and (3)
remove axis lines and ticks if your plot is a heatmap. To use the
function, simply add it to your ggplot object like so:
ggplot(data=diamonds, aes(x=cut, fill=cut)) +
geom_bar() +
theme_arcadia(x_axis_type = "categorical") +
scale_fill_arcadia(palette_name = "secondary", reverse = TRUE) +
labs(x = "diamond cut", y = "count") +
theme(legend.position = "none") +
clean_plot()To save plots, we have a custom save_arcadia_plot() function built on
top of ggsave() that helps you export plots that adhere to our size
guidelines and can be used with the Illustrator templates. The different
plot size options are
"full_wide", "float_wide", "half_square", "full_square", or
"float_square". Additionally for the background to be transparent in
exported plots you need to set this argument to FALSE in the
theme_arcadia() function:
plot <- ggplot(data=diamonds, aes(x=cut, fill=cut)) +
geom_bar() +
theme_arcadia(x_axis_type = "categorical", background = FALSE) +
scale_fill_arcadia(palette_name = "secondary", reverse = TRUE) +
clean_plot() +
theme(legend.position = "bottom")
save_arcadia_plot("man/figures/arcadia-plot", plot, panel_size = "full_square", formats = c("pdf", "png"))You can also apply gradient palettes to your plots with
gradient_fill_arcadia or gradient_scale_arcadia in a similar fashion
to the above:
ggplot(data = mtcars, aes(x = hp, y = mpg, color = hp)) +
geom_point(size=2.5) +
theme_arcadia() +
gradient_color_arcadia(palette_name = "lisafrank")There are also bicolor gradients available that are useful for heatmap
plots, and you can also remove the background color with
background = FALSE in the theme_arcadia() function:
library(reshape2)
# heatmap of correlation matrix from iris dataset
data(iris)
iris_data <- iris[, 1:4]
cor_matrix <- cor(iris_data)
melted_cor_matrix <- (melt(cor_matrix))
ggplot(melted_cor_matrix, aes(x=Var1, y=Var2, fill=value)) +
geom_tile() +
theme_arcadia(x_axis_type = "categorical", y_axis_type = "categorical", background = FALSE) +
gradient_fill_arcadia(palette_name = "purplegreen") +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
legend.position = "top") +
labs(x = "", y = "") +
clean_plot()You can view all the color palette options and the individual hex codes composing each palette within the main and gradient palettes with:
show_arcadia_palettes()
#> $primary
#> [1] "#5088C5" "#F28360" "#3B9886" "#F7B846" "#7A77AB" "#F898AE" "#73B5E3"
#> [8] "#FFB984" "#F5E4BE" "#BABEE0" "#97CD78" "#C85152"
#>
#> $secondary
#> [1] "#C6E7F4" "#F8C5C1" "#DBD1C3" "#B6C8D4" "#B5BEA4" "#DA9085" "#8A99AD"
#> [8] "#EDE0D6"
#>
#> $primary_ordered
#> [1] "#5088C5" "#F28360" "#F7B846" "#97CD78" "#7A77AB" "#F898AE" "#3B9886"
#> [8] "#C85152" "#73B5E3" "#FFB984" "#F5E4BE" "#BABEE0"
#>
#> $secondary_ordered
#> [1] "#C6E7F4" "#F8C5C1" "#DBD1C3" "#B5BEA4" "#B6C8D4" "#DA9085" "#EDE0D6"
#> [8] "#8A99AD"
#>
#> $neutrals
#> [1] "#FFFFFF" "#EBEDE8" "#BAB0A8" "#8F8885" "#43413F" "#484B50" "#292928"
#> [8] "#09090A" "#596F74"
#>
#> $blue_shades
#> [1] "#C6E7F4" "#73B5E3" "#5088C5" "#2B65A1" "#094468"
#>
#> $orange_shades
#> [1] "#FFCFAF" "#FFB984" "#F28360" "#C85152" "#9E3F41"
#>
#> $yellow_shades
#> [1] "#F5E4BE" "#FFD364" "#F7B846" "#D68D22" "#A85E28"
#>
#> $purple_shades
#> [1] "#DCDFEF" "#BABEE0" "#7A77AB" "#54448C" "#341E60"
#>
#> $teal_shades
#> [1] "#C3E2DB" "#6FBCAD" "#3B9886" "#2A6B5E" "#09473E"
#>
#> $pink_shades
#> [1] "#FFE3D4" "#F8C5C1" "#F898AE" "#E2718F" "#C04C70"
#>
#> $warm_gray_shades
#> [1] "#EDE6DA" "#DBD1C3" "#BAB0A8" "#8F8885" "#635C5A"
#>
#> $cool_gray_shades
#> [1] "#E6EAED" "#CAD4DB" "#ABBAC4" "#8A99AD" "#687787"
show_arcadia_gradients()
#> $magma
#> $magma$colors
#> [1] "#341E60" "#54448C" "#A96789" "#E9A482" "#F5DFB2"
#>
#> $magma$positions
#> [1] 0.000 0.217 0.498 0.799 1.000
#>
#>
#> $verde
#> $verde$colors
#> [1] "#09473E" "#4E7F72" "#FFCC7B" "#FFE3D4"
#>
#> $verde$positions
#> [1] 0.000 0.357 0.909 1.000
#>
#>
#> $viridis
#> $viridis$colors
#> [1] "#282A49" "#5088C5" "#97CD78" "#FFFDBD"
#>
#> $viridis$positions
#> [1] 0.000 0.468 0.746 1.000
#>
#>
#> $wine
#> $wine$colors
#> [1] "#52180A" "#C85152" "#FFB984" "#F8F4F1"
#>
#> $wine$positions
#> [1] 0.000 0.451 0.828 1.000
#>
#>
#> $lisafrank
#> $lisafrank$colors
#> [1] "#09473E" "#5088C5" "#BABEE0" "#F4CAE3"
#>
#> $lisafrank$positions
#> [1] 0.000 0.484 0.862 1.000
#>
#>
#> $sunset
#> $sunset$colors
#> [1] "#4D2500" "#A85E28" "#E9A482" "#FFCC7B" "#FFE3D4"
#>
#> $sunset$positions
#> [1] 0.000 0.407 0.767 0.915 1.000
#>
#>
#> $oranges
#> $oranges$colors
#> [1] "#964222" "#FFB984" "#F8F4F1"
#>
#> $oranges$positions
#> [1] 0.000 0.761 1.000
#>
#>
#> $sages
#> $sages$colors
#> [1] "#2A6B5E" "#B5BEA4" "#F7FBEF"
#>
#> $sages$positions
#> [1] 0.000 0.641 1.000
#>
#>
#> $orangesage
#> $orangesage$colors
#> [1] "#964222" "#FFB984" "#F8F4F1" "#F7FBEF" "#B5BEA4" "#2A6B5E"
#>
#> $orangesage$positions
#> [1] 0.0000 0.3805 0.4900 0.5100 0.8205 1.0000
#>
#>
#> $reds
#> $reds$colors
#> [1] "#9E3F41" "#C85152" "#FFF3F4"
#>
#> $reds$positions
#> [1] 0.000 0.212 1.000
#>
#>
#> $blues
#> $blues$colors
#> [1] "#2B65A1" "#5088C5" "#F4FBFF"
#>
#> $blues$positions
#> [1] 0.000 0.254 1.000
#>
#>
#> $redblue
#> $redblue$colors
#> [1] "#9E3F41" "#C85152" "#FFF3F4" "#F4FBFF" "#5088C5" "#2B65A1"
#>
#> $redblue$positions
#> [1] 0.000 0.106 0.490 0.510 0.627 1.000
#>
#>
#> $purples
#> $purples$colors
#> [1] "#6862AB" "#7A77AB" "#FCF7FF"
#>
#> $purples$positions
#> [1] 0.000 0.144 1.000
#>
#>
#> $greens
#> $greens$colors
#> [1] "#47784A" "#97CD78" "#F7FBEF"
#>
#> $greens$positions
#> [1] 0.000 0.622 1.000
#>
#>
#> $purplegreen
#> $purplegreen$colors
#> [1] "#6862AB" "#7A77AB" "#FCF7FF" "#F7FBEF" "#97CD78" "#47784A"
#>
#> $purplegreen$positions
#> [1] 0.000 0.072 0.490 0.510 0.811 1.000To install the package locally from a specific branch while in development, do the following:
# TODO change to main once deployed
remotes::install_github("Arcadia-Science/arcadiathemeR", \
ref="EAM/embed-fonts"




