-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Themes
dkahle edited this page Jul 12, 2011
·
22 revisions
Proposed themes and theme enhancements.
minimalistic theme to maximize data/ink ratio, so as to focus more strongly on the data glyphs. It also serves to facilitate post-processing in graphic design software (Illustrator, Inkscape)
theme_minimal <- function (base_size = 12, base_family = "")
{
structure(list(axis.line = theme_blank(), axis.text.x = theme_text(family = base_family,
size = base_size * 0.8, lineheight = 0.9, vjust = 1),
axis.text.y = theme_text(family = base_family, size = base_size *
0.8, lineheight = 0.9, hjust = 1), axis.ticks = theme_segment(colour = "black",
size = 0.2), axis.title.x = theme_text(family = base_family,
size = base_size, vjust = 1), axis.title.y = theme_text(family = base_family,
size = base_size, angle = 90, vjust = 0.5), axis.ticks.length = unit(0.3,
"lines"), axis.ticks.margin = unit(0.5, "lines"),
legend.background = theme_rect(colour = NA), legend.key = theme_rect(colour = NA),
legend.key.size = unit(1.2, "lines"), legend.key.height = NA,
legend.key.width = NA, legend.text = theme_text(family = base_family,
size = base_size * 0.8), legend.text.align = NA,
legend.title = theme_text(family = base_family, size = base_size *
0.8, face = "bold", hjust = 0), legend.title.align = NA,
legend.position = "right", legend.direction = "vertical",
legend.box = NA, panel.background = theme_rect(fill = "white",
colour = NA), panel.border = theme_rect(fill = NA,
colour = "grey90"), panel.grid.major = theme_line(colour = "grey90",
size = 0.2), panel.grid.minor = theme_line(colour = "grey98",
size = 0.5), panel.margin = unit(0.25, "lines"),
strip.background = theme_rect(fill = NA, colour = NA),
strip.text.x = theme_text(family = base_family, size = base_size *
0.8), strip.text.y = theme_text(family = base_family,
size = base_size * 0.8, angle = -90), plot.background = theme_rect(colour = NA),
plot.title = theme_text(family = base_family, size = base_size *
1.2), plot.margin = unit(c(1, 1, 0.5, 0.5), "lines")),
class = "options")
}
Maximize the plotting area so as to extend over the full viewport. Axis labels and titles are masked; this theme is therefore limited to special graphs such as images where full control over the image size is required (e.g. for alignment with other graphical elements).
theme_fullframe <- function (base_size = 12){
structure(list(
axis.line = theme_blank(),
axis.text.x = theme_blank(),
axis.text.y = theme_blank(),
axis.ticks = theme_blank(),
axis.title.x = theme_blank(),
axis.title.y = theme_blank(),
axis.ticks.length = unit(0, "lines"),
axis.ticks.margin = unit(0, "lines"),
legend.position = "none",
panel.background = theme_blank(),
panel.border = theme_blank(),
panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank(),
panel.margin = unit(0, "lines"),
plot.background = theme_blank(),
plot.margin = unit(c(-1.5, -1.5, -1.5, -1.5), "lines")
), class = "options")
}
A black theme for black background presentations. Note that using this typically involves changing the colour/fill aesthetics for viewing.
theme_black <- function (base_size = 12){
structure(list(
axis.line = theme_blank(),
axis.text.x = theme_text(size = base_size * 0.8, colour = 'white', lineheight = 0.9, vjust = 1),
axis.text.y = theme_text(size = base_size * 0.8, colour = 'white', lineheight = 0.9, hjust = 1),
axis.ticks = theme_segment(colour = "white", size = 0.2),
axis.title.x = theme_text(size = base_size, colour = 'white', vjust = 1),
axis.title.y = theme_text(size = base_size, colour = 'white', angle = 90, vjust = 0.5),
axis.ticks.length = unit(0.3, "lines"),
axis.ticks.margin = unit(0.5, "lines"),
legend.background = theme_rect(colour = NA),
legend.key = theme_rect(colour = "white", fill = 'black'),
legend.key.size = unit(1.2, "lines"),
legend.key.height = NA,
legend.key.width = NA,
legend.text = theme_text(size = base_size * 0.8, colour = 'white'),
legend.title = theme_text(size = base_size * 0.8, face = "bold", hjust = 0, colour = 'white'),
legend.position = "right",
legend.text.align = NA,
legend.title.align = NA,
legend.direction = "vertical",
legend.box = NA,
panel.background = theme_rect(fill = "black", colour = NA),
panel.border = theme_rect(fill = NA, colour = "white"),
panel.grid.major = theme_line(colour = "grey20", size = 0.2),
panel.grid.minor = theme_line(colour = "grey5", size = 0.5),
panel.margin = unit(0.25, "lines"),
strip.background = theme_rect(fill = "grey30", colour = "grey10"),
strip.text.x = theme_text(size = base_size * 0.8, colour = 'white'),
strip.text.y = theme_text(size = base_size * 0.8, colour = 'white', angle = -90),
plot.background = theme_rect(colour = 'black', fill = 'black'),
plot.title = theme_text(size = base_size * 1.2),
plot.margin = unit(c(1, 1, 0.5, 0.5), "lines")
), class = "options")
}