[EDIT 06/05/16: See updated version of this code here for ggplot2 version 2.X.X: https://gist.github.com/jslefche/eff85ef06b4705e6efbc]
I’ve long extolled the virtues of using ggplot2 as a graphing tool for R for its versatility and huge feature set. One of my favorite aspects of ggplot2 is the ability to tweak every aspect of the plot using intuitive commands. With the recent release of version 0.9.2 though, creator Hadley Wickham overhauled the theme options, which broke my preferred black theme, theme_black(), found here. I’ve updated theme_black() to work with the current version of ggplot 0.9.3.1. Enjoy!
library(ggplot2) library(gridExtra) theme_black = function(base_size = 12, base_family = "") { theme_grey(base_size = base_size, base_family = base_family) %+replace% theme( # Specify axis options axis.line = element_blank(), axis.text.x = element_text(size = base_size*0.8, color = "white", lineheight = 0.9), axis.text.y = element_text(size = base_size*0.8, color = "white", lineheight = 0.9), axis.ticks = element_line(color = "white", size = 0.2), axis.title.x = element_text(size = base_size, color = "white", margin = margin(0, 10, 0, 0)), axis.title.y = element_text(size = base_size, color = "white", angle = 90, margin = margin(0, 10, 0, 0)), axis.ticks.length = unit(0.3, "lines"), # Specify legend options legend.background = element_rect(color = NA, fill = "black"), legend.key = element_rect(color = "white", fill = "black"), legend.key.size = unit(1.2, "lines"), legend.key.height = NULL, legend.key.width = NULL, legend.text = element_text(size = base_size*0.8, color = "white"), legend.title = element_text(size = base_size*0.8, face = "bold", hjust = 0, color = "white"), legend.position = "right", legend.text.align = NULL, legend.title.align = NULL, legend.direction = "vertical", legend.box = NULL, # Specify panel options panel.background = element_rect(fill = "black", color = NA), panel.border = element_rect(fill = NA, color = "white"), panel.grid.major = element_line(color = "grey35"), panel.grid.minor = element_line(color = "grey20"), panel.margin = unit(0.5, "lines"), # Specify facetting options strip.background = element_rect(fill = "grey30", color = "grey10"), strip.text.x = element_text(size = base_size*0.8, color = "white"), strip.text.y = element_text(size = base_size*0.8, color = "white",angle = -90), # Specify plot options plot.background = element_rect(color = "black", fill = "black"), plot.title = element_text(size = base_size*1.2, color = "white"), plot.margin = unit(rep(1, 4), "lines") ) } ggplot(mtcars, aes(wt, mpg)) + geom_point() # Add theme_black() ggplot(mtcars, aes(wt, mpg)) + geom_point(color = "white") + theme_black()
Nice, thank you. Note that this requires the grid() package to use the unit() function.
Right you are. Code updated!
axis.ticks.margin is deprecated 😦
See updated post with link to gist…!