Skip to content

Instantly share code, notes, and snippets.

@z3tt
Created May 22, 2019 18:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save z3tt/df19fe5dbf3e865c50fcf7832bbdae57 to your computer and use it in GitHub Desktop.
Save z3tt/df19fe5dbf3e865c50fcf7832bbdae57 to your computer and use it in GitHub Desktop.
My ggplot theme
##----------------------------------------------------------------------------------------------------------##
## Cedric Scherer (cedricphilippscherer@gmail.com) ##
## Function for a custom ggplot theme ##
## 2017-05-27 ##
##----------------------------------------------------------------------------------------------------------##
library(ggplot2)
if ("extrafont" %in% rownames(installed.packages()))
{
library(extrafont)
#extrafont::font_import()
extrafont::loadfonts(device = "win")
base <- "Lato"#"Roboto Condensed"
} else {
base <- "Gadugi"
}
theme_custom <- function (base_size = 12, base_family = base)
{
half_line <- base_size/2
theme(line = element_line(colour = "black", size = 0.4, linetype = 1, lineend = "butt"),
rect = element_rect(fill = "white", colour = "black", size = 0.4, linetype = 1),
text = element_text(family = base_family, face = "plain", colour = "black", size = base_size,
lineheight = 0.9, hjust = 0.5, vjust = 0.5, angle = 0, margin = margin(), debug = FALSE),
axis.line = element_blank(),
axis.line.x = NULL,
axis.line.y = NULL,
axis.text = element_text(size = base_size * 1.1, colour = "black"),
axis.text.x = element_text(margin = margin(t = 0.8 * half_line/2), vjust = 1),
axis.text.x.top = element_text(margin = margin(b = 0.8 * half_line/2), vjust = 0),
axis.text.y = element_text(margin = margin(r = 0.8 * half_line/2), hjust = 1),
axis.text.y.right = element_text(margin = margin(l = 0.8 * half_line/2), hjust = 0),
axis.ticks = element_line(colour = "black", size = 0.3),
axis.ticks.length = unit(half_line/1.25, "pt"),
axis.title.x = element_text(margin = unit(c(3, 0, 0, 0), "mm"), vjust = 1, size = base_size * 1.3),
axis.title.x.top = element_text(margin = margin(b = half_line), vjust = 0),
axis.title.y = element_text(angle = 90, margin = unit(c(0, 3, 0, 0), "mm"), vjust = 1, size = base_size * 1.3),
axis.title.y.right = element_text(angle = -90, margin = margin(l = half_line), vjust = 0),
legend.background = element_rect(colour = NA),
legend.spacing = unit(0.4, "cm"),
legend.spacing.x = NULL,
legend.spacing.y = NULL,
legend.margin = margin(0.2, 0.2, 0.2, 0.2, "cm"),
legend.key = element_rect(fill = "white", colour = "white"),
legend.key.size = unit(1.2, "lines"),
legend.key.height = NULL,
legend.key.width = NULL,
legend.text = element_text(size = rel(1)),
legend.text.align = NULL,
legend.title = element_text(face = "bold", hjust = 0, size = rel(1.2)),
legend.title.align = NULL,
legend.position = "right",
legend.direction = NULL,
legend.justification = "center",
legend.box = NULL,
legend.box.margin = margin(0, 0, 0, 0, "cm"),
legend.box.background = element_blank(),
legend.box.spacing = unit(0.4, "cm"),
panel.background = element_rect(fill = NA, colour = NA),
panel.border = element_rect(colour = "black", fill = NA, size = rel(1)),
panel.grid = element_blank(),
panel.grid.major = element_line(colour = "transparent"),
panel.grid.minor = element_line(colour = "transparent"),
panel.spacing = unit(base_size, "pt"),
panel.spacing.x = NULL,
panel.spacing.y = NULL,
panel.ontop = FALSE,
strip.background = element_rect(fill = "white", colour = "black"),
strip.text = element_text(colour = "black", size = base_size * 1.1, face = "bold"),
strip.text.x = element_text(margin = margin(t = half_line, b = half_line)),
strip.text.y = element_text(angle = -90, margin = margin(l = half_line, r = half_line)),
strip.placement = "inside",
strip.placement.x = NULL,
strip.placement.y = NULL,
strip.switch.pad.grid = unit(0.1, "cm"),
strip.switch.pad.wrap = unit(0.1, "cm"),
plot.background = element_rect(colour = NA),
plot.title = element_text(size = base_size * 1.8, hjust = 0.5, vjust = 1, face = "bold", margin = margin(b = half_line * 1.2)),
plot.subtitle = element_text(size = base_size * 1.3, hjust = 0.5, vjust = 1, margin = margin(b = half_line * 0.9)),
plot.caption = element_text(size = rel(0.9), hjust = 1, vjust = 1, margin = margin(t = half_line * 0.9)),
plot.margin = margin(base_size, base_size, base_size, base_size), complete = T,
plot.tag = element_text(size = rel(1.5), face = "bold", hjust = 0.5, vjust = 0.5),
plot.tag.position = "topleft")
}
theme_set(theme_custom())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment