The goal of ggAU is to simplify the process of creating publication-ready visualizations that follow the Aarhus University color scheme. It also includes a color scheme inspired by the TRACERx publications.
Installation
You can install the development version of ggAU from GitHub with:
# install.packages("devtools")
devtools::install_github("juditkisistok/ggAU")
Available color palettes
library(ggAU)
unikn::seecol(au_color_palette(style = "light"), main = "Light",
grid = F, rgb = F)
unikn::seecol(au_color_palette(style = "dark"), main = "Dark",
grid = F, rgb = F)
unikn::seecol(au_color_palette(style = "hotandcold"), main = "Hot and cold",
grid = F, rgb = F)
unikn::seecol(au_color_palette(style = "hotandcold_dark"), main = "Hot and cold (dark)",
grid = F, rgb = F)
unikn::seecol(au_color_palette(style = "tracerx"), main = "TRACERx",
grid = F, rgb = F)
Examples
The scale_fill_au
and scale_color_au
functions allow you to apply the pre-defined color palettes.
The default color scheme is light
and the default variable type is continuous. You can add discrete = T
for categorical variable color schemes.
iris_df = dplyr::summarize(dplyr::group_by(iris, Species),
`Mean petal width` = mean(Petal.Width))
light_plot_fill = ggplot2::ggplot(iris_df, ggplot2::aes(x = Species,
y = `Mean petal width`, fill = Species)) +
ggplot2::geom_bar(stat = "identity") +
ggpubr::theme_pubr() +
scale_fill_au(discrete = T)
dark_plot_fill = ggplot2::ggplot(iris_df, ggplot2::aes(x = Species,
y = `Mean petal width`, fill = Species)) +
ggplot2::geom_bar(stat = "identity") +
ggpubr::theme_pubr() +
scale_fill_au(discrete = T, style = "dark")
cowplot::plot_grid(light_plot_fill, dark_plot_fill)
It is also possible to define your own mix of colors - you can retrieve a vector of AU hex codes by color name.
my_custom_style = c("blue", "yellow", "red")
ggplot2::ggplot(iris_df, ggplot2::aes(x = Species,
y = `Mean petal width`, fill = Species)) +
ggplot2::geom_bar(stat = "identity") +
ggpubr::theme_pubr() +
scale_fill_au(discrete = T, style = "custom", colors = my_custom_style)
The continuous fill scale works in a similar way, both with the built-in and custom color schemes.
dummy_data = expand.grid(x = paste0("var_", seq(1, 10)),
y = paste0("var_", seq(11, 20)))
dummy_data$z = runif(100, -1, 1)
cont_fill_1 = ggplot2::ggplot(dummy_data, ggplot2::aes(x, y, fill = z)) +
ggplot2::geom_tile() +
ggpubr::theme_pubr() +
scale_fill_au(style = "hotandcold")
cont_fill_2 = ggplot2::ggplot(dummy_data, ggplot2::aes(x, y, fill= z)) +
ggplot2::geom_tile() +
ggpubr::theme_pubr() +
scale_fill_au(style = "custom", colors = c("yellow", "white", "darkblue"))
cowplot::plot_grid(cont_fill_1, cont_fill_2)
The color aesthetic can be changed in a similar way, using scale_color_au
.
discrete_cols = ggplot2::ggplot(iris, ggplot2::aes(x = Petal.Width, y = Petal.Length, color = Species)) +
ggplot2::geom_point(size = 5, alpha = 0.3) +
ggpubr::theme_pubr() +
scale_color_au(discrete = T) +
ggplot2::ggtitle("Built-in discrete color scale") +
ggplot2::theme(plot.title = ggplot2::element_text(hjust = 0.5))
discrete_custom = ggplot2::ggplot(iris, ggplot2::aes(x = Petal.Width, y = Petal.Length, color = Species)) +
ggplot2::geom_point(size = 5, alpha = 0.3) +
ggpubr::theme_pubr() +
scale_color_au(discrete = T, style = "custom", colors = c("yellow", "magenta", "darkblue")) +
ggplot2::ggtitle("Custom discrete color scale") +
ggplot2::theme(plot.title = ggplot2::element_text(hjust = 0.5))
cont_cols = ggplot2::ggplot(iris, ggplot2::aes(x = Petal.Width, y = Petal.Length, color = Petal.Length)) +
ggplot2::geom_point(size = 5, alpha = 0.3) +
ggpubr::theme_pubr() +
scale_color_au(discrete = F, style = "hotandcold") +
ggplot2::ggtitle("Built-in continuous color scale") +
ggplot2::theme(plot.title = ggplot2::element_text(hjust = 0.5))
cont_custom = ggplot2::ggplot(iris, ggplot2::aes(x = Petal.Width, y = Petal.Length, color = Petal.Length)) +
ggplot2::geom_point(size = 5, alpha = 0.3) +
ggpubr::theme_pubr() +
scale_color_au(discrete = F, style = "custom", colors = c("darkblue", "yellow", "magenta")) +
ggplot2::ggtitle("Custom continuous color scale") +
ggplot2::theme(plot.title = ggplot2::element_text(hjust = 0.5))
cowplot::plot_grid(discrete_cols, discrete_custom, cont_cols, cont_custom)
Built-in plots
Additionally to the color schemes, ggAU also includes commonly used visualization types with pre-applied AU styles.
Violinplotter
The function has many customization options, however, specifying data
, x_val
and y_val
is enough for getting a basic plot up and running.
minimal = violinplotter(data = iris, x_val = "Species", y_val = "Petal.Width",
title = "Minimal example")
minimal_filtered = violinplotter(data = iris, x_val = "Species", y_val = "Petal.Width",
filter = T, filter_col = "Species", filter_val = c("setosa", "virginica"),
title = "Minimal filtered example")
full_custom = violinplotter(data = iris, x_val = "Species", y_val = "Petal.Width",
x_lab = "Species", y_lab = "Petal width",
title = "Fully customized example",
filter = F, filter_col = NA, filter_val = NA,
comp_vec = list(c("setosa", "virginica"),
c("setosa", "versicolor"),
c("virginica", "versicolor")),
col_style = "custom", fill_style = "custom",
col_vec = c("red", "blue", "green"),
fill_vec = c("red", "blue", "green"),
display_n = F)
cowplot::plot_grid(minimal, minimal_filtered, full_custom, nrow = 1)
Barplotter
This function creates a bar plot and displays the Fisher’s test p-value as a subtitle. Similarly to violinplotter
, many customization options are available, but specifying data
, x_lab
and y_lab
is sufficient for creating a basic plot.
# modifying the iris data to include two categorical variables
iris = iris %>%
dplyr::mutate(Petal_mean = ifelse(Petal.Length > mean(Petal.Length), "above_mean", "below_mean"))
minimal_barplot = barplotter(data = iris, x_val = "Species", y_val = "Petal_mean",
labcol = "white")
full_custom_barplot = barplotter(data = iris, x_val = "Species", y_val = "Petal_mean",
order = c("virginica", "setosa", "versicolor"),
scale_labs = c("Virginica", "Setosa", "Versicolor"),
pct = FALSE, style = "custom", colors = c("darkblue", "magenta"),
y_lab = "Number of individuals", x_lab = "",
title = "Comparing the petal lengths of different\nspecies",
labcol = "white", legend_lab = "Petal length category",
labels = c("Above mean", "Below mean"))
cowplot::plot_grid(minimal_barplot, full_custom_barplot)
Scatterplotter
This function creates a scatterplot, fits a smooth or linear line to the data, and calculates correlation. Similarly to violinplotter
, many customization options are available, but specifying data
, x_lab
and y_lab
is sufficient for creating a basic plot.
minimal_scatterplot = scatterplotter(iris, "Sepal.Width", "Sepal.Length",
linecolor = au_colors("darkred"),
pointcolor = au_colors("darkblue"),
fit = "single")
full_custom_scatterplot = scatterplotter(iris, "Sepal.Width", "Sepal.Length",
col_val = "Species", style = "custom",
colors = c("trxred", "trxblue", "trxyellow"),
y_lab = "Sepal Length", x_lab = "Sepal Width",
title = "Comparing sepal widths and lengths per\nspecies",
fit = "grouped", corr_method = "pearson",
alternative = "two.sided", fit_method = "lm",
se = FALSE, formula = "y ~ x",
legend_lab = "Species", discrete = TRUE,
labels = c("Species 1", "Species 2", "Species 3"),
pointsize = 5, point_alpha = 0.7)
cowplot::plot_grid(minimal_scatterplot, full_custom_scatterplot)
Volcanoplotter
This function creates a volcano plot, and allows flexible labelling. Similarly to violinplotter
, many customization options are available, but specifying data
, x_lab
and y_lab
is sufficient for creating a basic plot.
minimal_volcanoplot = volcanoplotter(volcanodata, x_val = "logFC", y_val = "adj.P.Val")
full_custom_volcanoplot = volcanoplotter(volcanodata, x_val = "logFC", y_val = "adj.P.Val",
nonsig_col = "grey", pointsize = 3, point_alpha = 0.5,
y_lab = "P-value (FDR-adjusted)", x_lab = "log10(fold change)",
title = "Differential expression analysis",
sig_neg_col = au_colors("trxblue"),
sig_pos_col = au_colors("trxred"),
pval_cutoff = 0.05, add_labels = TRUE, num_lab = 10,
label_col = "SYMBOL", lab_size = 3, dirs = "y", nudge_x1 = 10,
nudge_x2 = -10, nudge_y1 = 0, nudge_y2 = 0, lab_bordersize = NA,
fillcol = scales::alpha(c("white"), 0),
segment.size = 0.2, max.overlaps = 100, label.padding = 0.1,
lim = c(1, 1e-11))
cowplot::plot_grid(minimal_volcanoplot, full_custom_volcanoplot)