--- title: "Customizing Visualizations" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Customizing Visualizations} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 5, warning = FALSE, message = FALSE ) ``` This vignette covers the customization options available across dashboardr visualization functions. We use General Social Survey (GSS) data from the `gssr` package to demonstrate each feature. ```{r setup} library(dashboardr) library(dplyr) ```
Data preparation (click to expand) ```{r data-prep} library(gssr) data(gss_all) gss <- gss_all %>% filter(year >= 2000) %>% select(year, sex, race, degree, happy, rincome, age, marital) %>% mutate( sex = haven::as_factor(sex), race = haven::as_factor(race), degree = haven::as_factor(degree), happy = haven::as_factor(happy), rincome = haven::as_factor(rincome), marital = haven::as_factor(marital) ) %>% filter(!is.na(sex), !is.na(race), !is.na(degree)) ```
## Color Palettes Use `color_palette` to control the colors used in any visualization. You can pass: - A **named vector** to map specific categories to specific colors - An **unnamed vector** for a sequential palette ### Named palette (category mapping) ```{r} viz_bar( data = gss, x_var = "race", title = "Respondents by Race", color_palette = c( "White" = "#4E79A7", "Black" = "#F28E2B", "Other" = "#76B7B2" ) ) ``` ### Grouped bar with palette ```{r} viz_bar( data = gss, x_var = "degree", group_var = "sex", title = "Education by Gender", color_palette = c("Male" = "#4E79A7", "Female" = "#E15759") ) ``` ### Unnamed sequential palette ```{r} viz_bar( data = gss, x_var = "race", title = "Sequential Palette", color_palette = c("#264653", "#2A9D8F", "#E9C46A") ) ``` ## Tooltips The `tooltip()` helper gives you full control over hover information. ### Format strings Use `{placeholders}` to insert dynamic values: ```{r} viz_bar( data = gss, x_var = "race", title = "Custom Tooltip Format", tooltip = tooltip(format = "{category}: {value} respondents") ) ``` ### Prefix and suffix shortcuts ```{r} viz_bar( data = gss, x_var = "degree", bar_type = "percent", title = "Education Distribution", tooltip = tooltip(suffix = "%") ) ``` ### Styled tooltips ```{r} viz_bar( data = gss, x_var = "happy", title = "Happiness Levels", tooltip = tooltip( format = "{category}
Count: {value}", backgroundColor = "#2d3436", borderColor = "#636e72", borderRadius = 8, style = list(color = "white", fontSize = "13px") ) ) ``` ### Shared tooltips for grouped charts ```{r} viz_bar( data = gss, x_var = "degree", group_var = "sex", title = "Shared Tooltip", tooltip = tooltip(shared = TRUE) ) ``` ## Legends Control the legend with `legend_position`: ```{r} viz_bar( data = gss, x_var = "degree", group_var = "sex", title = "Legend at Bottom", legend_position = "bottom" ) ``` ```{r} viz_bar( data = gss, x_var = "degree", group_var = "sex", title = "Legend on the Right", legend_position = "right" ) ``` ## Data Labels Toggle data labels with `data_labels_enabled` and control decimal precision with `label_decimals`: ```{r} viz_bar( data = gss, x_var = "race", title = "Without Data Labels", data_labels_enabled = FALSE ) ``` ```{r} viz_bar( data = gss, x_var = "degree", bar_type = "percent", title = "Percentage Labels (1 decimal)", label_decimals = 1 ) ``` ## Axis Labels and Formatting Customize axis labels with `x_label` and `y_label`: ```{r} viz_bar( data = gss, x_var = "degree", title = "Custom Axis Labels", x_label = "Highest Degree Earned", y_label = "Number of Respondents" ) ``` ## Error Bars Add error bars to bar charts with `error_bars`. Options include `"se"` (standard error), `"sd"` (standard deviation), and `"ci"` (confidence interval): ```{r} # Need a numeric value variable for error bars degree_age <- gss %>% filter(!is.na(age)) viz_bar( data = degree_age, x_var = "degree", value_var = "age", bar_type = "mean", title = "Mean Age by Education (with 95% CI)", error_bars = "ci", ci_level = 0.95, y_label = "Mean Age" ) ``` ```{r} viz_bar( data = degree_age, x_var = "degree", value_var = "age", bar_type = "mean", title = "Mean Age by Education (SE bars)", error_bars = "se", error_bar_color = "#E15759" ) ``` ## Horizontal Bars Flip the orientation with `horizontal = TRUE`: ```{r} viz_bar( data = gss, x_var = "degree", title = "Horizontal Bar Chart", horizontal = TRUE ) ``` ## Sorting Sort bars by value rather than category order: ```{r} viz_bar( data = gss, x_var = "marital", title = "Sorted Descending", sort_by_value = TRUE, sort_desc = TRUE ) ``` ```{r} viz_bar( data = gss, x_var = "marital", title = "Sorted Ascending", sort_by_value = TRUE, sort_desc = FALSE ) ``` ## Custom Category Order Use `x_order` to specify a custom display order: ```{r} viz_bar( data = gss, x_var = "degree", title = "Custom Degree Order", x_order = c("Graduate", "Bachelor", "Junior College", "High School", "Lt High School") ) ``` ## Missing Values Include `NA` values in charts using `include_na` and `na_label`: ```{r} viz_bar( data = gss, x_var = "happy", title = "Happiness (including missing)", include_na = TRUE, na_label = "Not Reported" ) ``` ## Themes and Fonts Use theme functions to apply consistent styling across a dashboard. These are applied at the dashboard level: ```r dashboard <- create_dashboard( title = "GSS Analysis", data = gss ) %>% apply_theme(theme_modern( font_family = "Inter" )) ``` Available built-in themes: - `theme_modern()` — Clean modern look with Inter font - `theme_clean()` — Minimal styling - `theme_academic()` — Academic/research style ## Chart Backends dashboardr supports multiple rendering backends. Pass `backend` to any viz function: ```{r} viz_bar( data = gss, x_var = "race", title = "Highcharter (default)", backend = "highcharter" ) ``` ```{r} viz_bar( data = gss, x_var = "race", title = "ECharts Backend", backend = "echarts4r" ) ``` See `vignette("chart-backends")` for a full comparison of available backends and their capabilities. ## Combining Customizations Most options can be combined freely: ```{r} viz_bar( data = gss, x_var = "degree", group_var = "sex", bar_type = "percent", title = "Education by Gender", subtitle = "GSS 2000-2021", x_label = "Highest Degree", y_label = "Percentage", horizontal = TRUE, color_palette = c("Male" = "#4E79A7", "Female" = "#E15759"), legend_position = "bottom", label_decimals = 0, tooltip = tooltip(suffix = "%", shared = TRUE) ) ```