Theme ggplot2, lattice, and base graphics based on a few simple settings.
Alternatives To Thematic
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
a month ago1January 16, 202124otherR
Theme ggplot2, lattice, and base graphics based on a few simple settings.
7 months ago1HTML
:book: 现代统计图形(人民邮电出版社出版) Modern Statistical Graphics
Ggplotify943222 months ago10June 27, 20234R
ggplot everything
Directlabels693523a month ago18January 16, 202111R
Direct labels for multicolor plots in lattice or ggplot2
Simulation For Data Science With R25
8 months agomitR
Simulation for Data Science with R by Packt Publishing
13 years agoR
Some simple examples with lattice and ggplot2 for R novices
5 years agoR
A collection of notes describing a few aspects of R for bioinformatics.
8 years agoR
Css for lattice and ggplot2
Alternatives To Thematic
Select To Compare

Alternative Project Comparisons


R build status CRAN status Lifecycle: experimental

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:


Auto theming in R Markdown requires {rmarkdown} 2.7 or higher:


Using themes with custom fonts works best if you have {showtext} and/or {ragg} installed.



{thematic}s auto theming gives R plots the ability to style themselves inside Shiny (via CSS), RStudio (via RStudio themes), and R Markdown (via {bslib}).


Call thematic_shiny() before launching a Shiny app to enable {thematic} for every plotOutput() inside the app. If no values are provided to thematic_shiny(), each plotOutput() uses the apps CSS colors to inform new R plotting defaults. If the app uses Google Fonts (and you have {showtext} and/or {ragg} installed), you may safely provide font = "auto" to thematic_shiny(), which also translates CSS fonts to R. Heres an example with the Pacifico font:

# In order for auto/custom fonts to work properly, you'll want
# either the ragg (or showtext) package installed

# If you want `{ragg}` to handle the font rendering in a Shiny app
options(shiny.useragg = TRUE)

# Call thematic_shiny() prior to launching the app, to change
# R plot theming defaults for all the plots generated in the app
thematic_shiny(font = "auto")

ui <- fluidPage(
  # bslib makes it easy to customize CSS styles for things
  # rendered by the browser, like tabsetPanel()
  theme = bslib::bs_theme(
    bg = "#002B36", fg = "#EEE8D5", primary = "#2AA198",
    # bslib also makes it easy to import CSS fonts
    base_font = bslib::font_google("Pacifico")
    type = "pills",
    tabPanel("ggplot", plotOutput("ggplot")),
    tabPanel("lattice", plotOutput("lattice")),
    tabPanel("base", plotOutput("base"))

server <- function(input, output) {
  output$ggplot <- renderPlot({
    ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars), color = factor(cyl))) +
      geom_point() +
  output$lattice <- renderPlot({
  output$base <- renderPlot({
    image(volcano, col = thematic_get_option("sequential"))

shinyApp(ui, server)


Call thematic_on() before generating plots inside RStudio to have all subsequent plots shown in the Plots viewing pane to reflect your RStudio theme. Note that thematic_on() enables {thematic} for the remainder of the R session, but you can use thematic_off() to disable (or thematic_theme() for one-off use of {thematic}). Heres an example of how {thematic} can intelligently adapt each plot to the current RStudio theme:

R Markdown

Call thematic_rmd() before generating plots inside R Markdown to have all subsequent plots within the document reflect the relevant theme. In a static (i.e., non-runtime: shiny) R Markdown context, auto-theming only works with {bslib}-powered rmarkdown::html_document() (as in the example below), but in other situations you may also provide colors and fonts explicitly to thematic_rmd().

Custom theming

By default, {thematic} attempts to detect the relevant background, foreground, and accent colors. However, you may also specify these settings more directly by providing relevant color and fonts directly to thematic_on() (or thematic_shiny()/thematic_rmd()).

thematic::thematic_on(bg = "#222222", fg = "white", accent = "#0CE3AC", font = "Oxanium")

ggp <- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars), color = factor(cyl))) +
  geom_point() +

{thematic} works by setting new global defaults that can always be overridden with plot-specific theme()-ing code:

ggp + theme(text = element_text(colour = "purple"))

To use a complete {ggplot2} theme with {thematic} (e.g., theme_bw(), theme_minimal(), etc), use theme_set() to set the theme globally. This way {thematic} has the opportunity to preserve the complete themes styling semantics when changing global defaults (e.g., theme_bw() uses the same fill color for the panel and plot background, which is semantically different from the theme_gray() default):


In addition to setting new defaults for main colors and fonts, {thematic} also sets defaults for qualitative (and sequential) colorscales. See the custom themes article to learn more about how to customize those defaults.

Learn more

  • See the auto theming article to gain a more detailed understanding of how auto theming make styling R plots easier in Shiny, R Markdown, and RStudio.
  • See the custom themes article for more on {thematic}s theming options as well as how they interact with {ggplot2}, {lattice}, and {base}.
  • See the fonts article for more on using Google Fonts with {thematic}.
  • See the scoping article for more about scoping {thematic} to individual plots.

Run some examples

Below is a link to an RStudio Cloud instance with some ready to run {thematic} examples:

Code of Conduct

{thematic} is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

Popular Lattice Projects
Popular Ggplot2 Projects
Popular Hardware Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.