The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
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:
install.packages("thematic")
Auto
theming in Shiny requires {shiny}
1.5.0 or higher:
install.packages("shiny")
Auto
theming in R Markdown requires {rmarkdown}
2.7 or
higher:
install.packages("rmarkdown")
Using themes with custom
fonts works best if you have {showtext}
and/or
{ragg}
installed.
install.packages("showtext")
install.packages("ragg")
{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
app’s 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.
Here’s an example with the Pacifico font:
library(shiny)
library(ggplot2)
library(thematic)
# In order for auto/custom fonts to work properly, you'll want
# either the ragg (or showtext) package installed
library(ragg)
# 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")
<- fluidPage(
ui # bslib makes it easy to customize CSS styles for things
# rendered by the browser, like tabsetPanel()
# https://rstudio.github.io/bslib
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")
),tabsetPanel(
type = "pills",
tabPanel("ggplot", plotOutput("ggplot")),
tabPanel("lattice", plotOutput("lattice")),
tabPanel("base", plotOutput("base"))
)
)
<- function(input, output) {
server $ggplot <- renderPlot({
outputggplot(mtcars, aes(wt, mpg, label = rownames(mtcars), color = factor(cyl))) +
geom_point() +
::geom_text_repel()
ggrepel
})$lattice <- renderPlot({
output::show.settings()
lattice
})$base <- renderPlot({
outputimage(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}
). Here’s an example of how
{thematic}
can intelligently adapt each plot to the current
RStudio theme:
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()
.
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()
).
library(ggplot2)
::thematic_on(bg = "#222222", fg = "white", accent = "#0CE3AC", font = "Oxanium")
thematic
<- ggplot(mtcars, aes(wt, mpg, label = rownames(mtcars), color = factor(cyl))) +
ggp geom_point() +
::geom_text_repel()
ggrepel ggp
{thematic}
works by setting new global defaults that can
always be overridden with plot-specific theme()
-ing
code:
+ theme(text = element_text(colour = "purple")) ggp
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 theme’s 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):
theme_set(theme_bw())
ggp
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.
{thematic}
’s theming options
as well as how they interact with {ggplot2}
,
{lattice}
, and {base}
.{thematic}
.{thematic}
to individual
plots.Below is a link to an RStudio Cloud instance with
some ready to run {thematic}
examples:
{thematic}
is released with a Contributor
Code of Conduct. By contributing
to this project, you agree to abide by its terms.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.