# WARNING - Generated by {fusen} from /dev/flat_ggplot_theme.Rmd: do not edit by hand
#' Create a theme functions by using the {ggplot2} elements extracted from the Figma file
#'
#' @param .data Tibble. {ggplot2} elements as created by \code{architekter::\link{extract_ggplot_theme}()}
#'
#' @importFrom ggplot2 theme element_rect element_line element_text
#' @importFrom dplyr filter pull
#' @importFrom cli cli_alert_success
#'
#' @return A {ggplot2} theme function.
#' @export
#' @examples
#' data(toy_raw_file_content)
#'
#' library(ggplot2)
#'
#' my_theme <- toy_raw_file_content %>%
#' extract_ggplot_theme() %>%
#' create_theme_fun()
#'
#' \dontrun{
#' ggplot(data = iris) +
#' aes(x = Sepal.Width, fill = Species) +
#' geom_density() +
#' labs(title = "Sepal width of several species of iris",
#' subtitle = "This plot respects the graphic design system defined in Figma",
#' x = "Sepal width",
#' y = "Density",
#' color = "Species") +
#' my_theme()
#' }
create_theme_fun <- function(.data) {
ad_hoc_theme_fun <- function(...) {
theme(
panel.background = element_rect(
size = .data %>% filter(element_name == "panel_background") %>% pull(size),
color = .data %>% filter(element_name == "panel_background") %>% pull(color),
fill = .data %>% filter(element_name == "panel_background") %>% pull(fill),
linetype = .data %>% filter(element_name == "panel_background") %>% pull(linetype)
),
panel.grid.major = element_line(
size = .data %>% filter(element_name == "panel_grid") %>% pull(size) / 10,
color = .data %>% filter(element_name == "panel_grid") %>% pull(color),
linetype = .data %>% filter(element_name == "panel_grid") %>% pull(linetype)
),
panel.grid.minor = element_line(
size = .data %>% filter(element_name == "panel_grid") %>% pull(size) / 10,
color = .data %>% filter(element_name == "panel_grid") %>% pull(color),
linetype = .data %>% filter(element_name == "panel_grid") %>% pull(linetype)
),
plot.title = element_text(
lineheight = .data %>% filter(element_name == "plot_title") %>% pull(lineheight),
family = .data %>% filter(element_name == "plot_title") %>% pull(family),
size = .data %>% filter(element_name == "plot_title") %>% pull(size) / 1.5,
color = .data %>% filter(element_name == "plot_title") %>% pull(color),
),
plot.subtitle = element_text(
lineheight = .data %>% filter(element_name == "plot_subtitle") %>% pull(lineheight),
family = .data %>% filter(element_name == "plot_subtitle") %>% pull(family),
size = .data %>% filter(element_name == "plot_subtitle") %>% pull(size) / 1.5,
color = .data %>% filter(element_name == "plot_subtitle") %>% pull(color),
),
legend.title = element_text(
lineheight = .data %>% filter(element_name == "legend_title") %>% pull(lineheight),
family = .data %>% filter(element_name == "legend_title") %>% pull(family),
size = .data %>% filter(element_name == "legend_title") %>% pull(size) / 1.5,
color = .data %>% filter(element_name == "legend_title") %>% pull(color),
),
legend.text = element_text(
lineheight = .data %>% filter(element_name == "legend_text") %>% pull(lineheight),
family = .data %>% filter(element_name == "legend_text") %>% pull(family),
size = .data %>% filter(element_name == "legend_text") %>% pull(size) / 1.5,
color = .data %>% filter(element_name == "legend_text") %>% pull(color),
),
axis.title = element_text(
lineheight = .data %>% filter(element_name == "axis_title") %>% pull(lineheight),
family = .data %>% filter(element_name == "axis_title") %>% pull(family),
size = .data %>% filter(element_name == "axis_title") %>% pull(size) / 1.5,
color = .data %>% filter(element_name == "axis_title") %>% pull(color),
),
axis.text = element_text(
lineheight = .data %>% filter(element_name == "axis_text") %>% pull(lineheight),
family = .data %>% filter(element_name == "axis_text") %>% pull(family),
size = .data %>% filter(element_name == "axis_text") %>% pull(size) / 1.5,
color = .data %>% filter(element_name == "axis_text") %>% pull(color),
),
...
)
}
cli_alert_success("The theme() function has been created.")
return(ad_hoc_theme_fun)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.