--- title: "basic-use" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{basic-use} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## Citation Please cite as > Dan MacLean. (2019). TeamMacLean/besthr: Initial Release (0.3.0). Zenodo. https://doi.org/10.5281/zenodo.3374507 ## Simplest Use Case - Two Groups, No Replicates With a data frame or similar object, use the `estimate()` function to get the bootstrap estimates of the ranked data. `estimate()` has a basic function call as follows: `estimate(data, score_column_name, group_column_name, control = control_group_name)` The first argument after the ```{r, fig.width=8, fig.height=6} library(besthr) hr_data_1_file <- system.file("extdata", "example-data-1.csv", package = "besthr") hr_data_1 <- readr::read_csv(hr_data_1_file) head(hr_data_1) hr_est_1 <- estimate(hr_data_1, score, group, control = "A") hr_est_1 plot(hr_est_1) ``` ### Setting Options You may select the group to set as the common reference control with `control`. ```{r, fig.width=8, fig.height=6} estimate(hr_data_1, score, group, control = "B" ) %>% plot() ``` You may select the number of iterations of the bootstrap to perform with `nits` and the quantiles for the confidence interval with `low` and `high`. ```{r, fig.width=8, fig.height=6} estimate(hr_data_1, score, group, control = "A", nits = 1000, low = 0.4, high = 0.6) %>% plot() ``` ## Extended Use Case - Technical Replicates You can extend the `estimate()` options to specify a third column in the data that contains technical replicate information, add the technical replicate column name after the sample column. Technical replicates are automatically merged using the `mean()` function before ranking. ```{r, fig.width=8, fig.height=6} hr_data_3_file <- system.file("extdata", "example-data-3.csv", package = "besthr") hr_data_3 <- readr::read_csv(hr_data_3_file) head(hr_data_3) hr_est_3 <- estimate(hr_data_3, score, sample, rep, control = "A") hr_est_3 plot(hr_est_3) ``` ### Alternate Plot Options In the case where you have use technical replicates and want to see those plotted you can use an extra plot option `which`. Set `which` to `just_data` if you wish the left panel of the plot to show all data without ranking. This will only work if you have technical replicates. ```{r, fig.width=8, fig.height=6} hr_est_3 %>% plot(which = "just_data") ``` ## Built-in Themes and Color Palettes besthr uses a modern, colorblind-safe appearance by default. You can customize the look using themes and color palettes. ### Theme Options Use the `theme` parameter to change the overall visual style: - `"modern"` (default) - A clean, contemporary style with refined typography - `"classic"` - The original besthr appearance (for backward compatibility) ```{r, fig.width=8, fig.height=6} # Modern theme (default) plot(hr_est_1) # Classic theme (original style) plot(hr_est_1, theme = "classic") ``` ### Color Palette Options Use the `colors` parameter to change the color palette: - `"okabe_ito"` (default) - Colorblind-safe Okabe-Ito palette - `"default"` - Original besthr colors (for backward compatibility) - `"viridis"` - Viridis color scale ```{r, fig.width=8, fig.height=6} # Default is already colorblind-safe plot(hr_est_1) # Original colors plot(hr_est_1, colors = "default") # Viridis palette plot(hr_est_1, colors = "viridis") ``` ### Quick Style Presets For easy customization without understanding all options, use preset styles: ```{r, fig.width=8, fig.height=6} # Publication-ready style plot(hr_est_1, config = besthr_style("publication")) # Presentation style (larger elements) plot(hr_est_1, config = besthr_style("presentation")) # Density style (gradient density instead of points) plot(hr_est_1, config = besthr_style("density")) # See all available styles list_besthr_styles() ``` ### Using besthr Palettes Directly The color palettes can also be used directly in your own ggplot2 code: ```{r} # Get palette colors besthr_palette("okabe_ito", n = 4) # Available palettes besthr_palette("default", n = 3) besthr_palette("viridis", n = 3) ``` ## Styling Plots ### Using Built-in Themes and Colors The easiest way to style your plots is using the `theme` and `colors` parameters: ```{r, fig.width=8, fig.height=6} # Modern look with colorblind-safe colors (this is the default) plot(hr_est_1, theme = "modern", colors = "okabe_ito") # Classic appearance (original besthr style) plot(hr_est_1, theme = "classic", colors = "default") # Viridis color scheme plot(hr_est_1, colors = "viridis") ``` ### Adding Titles and Annotations The plot object is a `patchwork` composition. You can add titles using `plot_annotation()`: ```{r, fig.width=8, fig.height=6} library(patchwork) p <- plot(hr_est_1) p + plot_annotation( title = 'HR Score Analysis', subtitle = "Control vs Treatment", caption = 'Generated with besthr' ) ``` ## Advanced Configuration For users who need fine-grained control over plot appearance, besthr provides a configuration system. ### Using besthr_plot_config The `besthr_plot_config()` function creates a configuration object that controls all aspects of plot appearance: ```{r} # Create a custom configuration cfg <- besthr_plot_config( panel_widths = c(2, 1), # Make data panel wider than bootstrap panel point_size_range = c(3, 10), # Larger points point_alpha = 0.9, # More opaque points mean_line_width = 1.5, # Thicker mean lines theme_style = "modern", color_palette = "okabe_ito" ) print(cfg) ``` ```{r, fig.width=8, fig.height=6} # Use the configuration in plot plot(hr_est_1, config = cfg) ``` You can update an existing configuration with `update_config()`: ```{r, fig.width=8, fig.height=6} # Modify just one setting cfg2 <- update_config(cfg, panel_widths = c(1, 2)) plot(hr_est_1, config = cfg2) ``` ### Configuration Options | Parameter | Default | Description | |-----------|---------|-------------| | `panel_widths` | `c(1, 1)` | Relative widths of observation and bootstrap panels | | `y_limits` | `NULL` (auto) | Fixed y-axis limits, or NULL for automatic | | `y_expand` | `0.05` | Proportional expansion of y-axis limits | | `point_size_range` | `c(2, 8)` | Min/max point sizes based on count | | `point_alpha` | `0.8` | Point transparency (0-1) | | `mean_line_type` | `3` | Line type for mean indicators | | `mean_line_width` | `1` | Line width for mean indicators | | `density_alpha` | `0.7` | Bootstrap density transparency | | `density_style` | `"points"` | Density display: "points" (jittered bootstrap), "gradient", or "solid" | | `theme_style` | `"modern"` | Theme: "classic" or "modern" | | `color_palette` | `"okabe_ito"` | Colors: "default", "okabe_ito", or "viridis" | ## Building Custom Plots For maximum flexibility, you can build plots from individual components. ### Using besthr_data_view The `besthr_data_view()` function extracts all plotting data from an hrest object with unified axis limits: ```{r} # Create a data view dv <- besthr_data_view(hr_est_1) print(dv) # Access the data head(dv$ranked) head(dv$bootstrap) dv$rank_limits ``` ### Using Panel Builders You can build individual panels and compose them yourself: ```{r, fig.width=10, fig.height=5} library(patchwork) # Create panels cfg <- besthr_plot_config(theme_style = "modern", color_palette = "okabe_ito") dv <- besthr_data_view(hr_est_1, cfg) p1 <- build_observation_panel(dv, cfg, "rank_simulation") p2 <- build_bootstrap_panel(dv, cfg) # Custom composition with different widths p1 + p2 + plot_layout(widths = c(3, 1)) ``` ## Alternative Visualizations ### Raincloud Plots The `plot_raincloud()` function provides an alternative visualization showing jittered data points with confidence intervals: ```{r, fig.width=6, fig.height=5} plot_raincloud(hr_est_1) ``` ```{r, fig.width=6, fig.height=5} # With modern styling plot_raincloud(hr_est_1, theme = "modern", colors = "okabe_ito") ``` ### Bootstrap Raincloud The `plot_bootstrap_raincloud()` function shows the bootstrap distribution as jittered points: ```{r, fig.width=6, fig.height=5} plot_bootstrap_raincloud(hr_est_1) ``` ## CI Color Customization The `derive_ci_colors()` function generates confidence interval colors that harmonize with the selected palette: ```{r} # Default CI colors derive_ci_colors("default", "classic") # Okabe-Ito derived CI colors derive_ci_colors("okabe_ito", "modern") # Viridis derived CI colors derive_ci_colors("viridis", "classic") ``` ## Significance and Effect Size ```{r} # Create example data with 3 groups and realistic variation set.seed(42) d_effect <- data.frame( score = c( sample(1:4, 12, replace = TRUE), # Group A: low scores (control) sample(4:8, 12, replace = TRUE), # Group B: medium-high scores sample(6:10, 12, replace = TRUE) # Group C: high scores ), group = rep(c("A", "B", "C"), each = 12) ) hr_effect <- estimate(d_effect, score, group, control = "A", nits = 1000) ``` ### Significance Annotations Add significance stars to groups where the bootstrap confidence interval does not overlap the control mean: ```{r, fig.width=8, fig.height=6} plot(hr_effect, show_significance = TRUE) ``` ### Effect Size Annotation Display effect size (difference from control) with confidence intervals: ```{r, fig.width=8, fig.height=6} plot(hr_effect, show_effect_size = TRUE) ``` ### Computing Statistics Directly You can access the significance and effect size calculations directly: ```{r} # Compute significance compute_significance(hr_effect) # Compute effect sizes compute_effect_size(hr_effect) ``` ## Summary Tables Generate publication-ready summary tables with `besthr_table()`: ```{r} # Default tibble format besthr_table(hr_effect) # With significance stars besthr_table(hr_effect, include_significance = TRUE) # Markdown format besthr_table(hr_est_1, format = "markdown") ``` Other formats available: `"html"`, `"latex"` ## Publication Export Save plots directly to publication-quality files: ```{r, eval=FALSE} # Save to PNG (default 300 DPI) save_besthr(hr_est_1, "figure1.png") # Save to PDF save_besthr(hr_est_1, "figure1.pdf", width = 10, height = 8) # Save raincloud plot save_besthr(hr_est_1, "raincloud.png", type = "raincloud") # With custom options save_besthr(hr_est_1, "figure1.png", theme = "modern", colors = "okabe_ito", width = 10, height = 6, dpi = 600) ``` Supported formats: PNG, PDF, SVG, TIFF, JPEG