Theme ggplot2, lattice, and base graphics based on a few simple settings.
Simplified theming of ggplot2, lattice, and base R graphics. In addition to providing a centralized approach to styling R graphics, thematic also enables automatic styling of R plots in Shiny, R Markdown, and RStudio.
Install the stable release of thematic on CRAN with:
Auto theming in Shiny requires shiny 1.5.0 or higher, which is also available on CRAN:
Auto theming in R Markdown requires rmarkdown 2.6.6 or higher, which currently isn’t on CRAN (but is available on GitHub):
shiny::tabsetPanel()with custom CSS styling, but default R styling:
library(shiny) library(ggplot2) library(bslib)
To add automatic coloring and fonts (i.e., the full auto theming experience) to the R plots, simply callthematic_on(font = "auto")and re-run the application. Since the plots are generated via Shiny, they assume new defaults which are informed by the CSS styling on their HTML container (that is, notice how the R plots now reflect the styling of theshiny::tabsetPanel()). Moreover, as long as the relevant font is a Google Font (in this case, Pacifico), thematic automatically downloads, caches, and registers font(s) with R.thematic::thematic_shiny(font = "auto") shinyApp(ui, server)
Instead of relying on thematic to automatically detect colors and fonts in the plot’s container, you can also specify them directly inthematic_on().thematic_on(bg = "#222222", fg = "white", accent = "#0CE3AC", font = "Oxanium")
library(ggplot2) ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars), color = factor(cyl))) + geom_point() + ggrepel::geom_text_repel() #> Warning: ggrepel: 7 unlabeled data points (too many overlaps). Consider #> increasing max.overlaps
In addition tothematic_on(), which applies the provided theme to all plots (up untilthematic_off()is called), there are a few variation ofthematic_on()which temporarily apply the given theme:
thematic_shiny(): apply theme up until the next Shiny app exits. Use this over
thematic_on()in Shiny apps.
thematic_rmd(): apply theme up until the next R Markdown document exits. Use this over
thematic_on()in R Markdown documents.
thematic_with_theme(): apply theme up until the provided plot
expris evaluated. Use this to apply different themes to different plots within a Shiny app.
Below is a link to an RStudio Cloud instance with some ready to run thematic examples: