--- 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") ``` ## Styling Plots You can style plots to your own taste. The object returned from `plot()` is a `patchwork` [https://patchwork.data-imaginist.com/](https://patchwork.data-imaginist.com/) object that composes two separate plots, the dot plot and the bootstrap percentile plot, which are themselves `ggplot` objects. So you can use a mixture of `patchwork` annotations functions for whole plot labels and `ggplot` themes for individual elements. ### Adding annotations. You can use the `patchwork` `plot_annotation()` function to add titles ```{r, fig.width=8, fig.height=6} library(patchwork) p <- plot(hr_est_1) p + plot_annotation(title = 'A stylish besthr plot', subtitle = "better than ever", caption = 'Though this example is not meaningful') p ``` ### Targetting a subplot to make theme changes You can change the style of the individual plot elements using subsetting syntax `[[]]` . The dot plot can be addressed within the `patchwork` object using index 1 within the `patchwork` object `p[[1]]`, and the percentile plot using `p[[2]]`. You must add to the existing subplot then assign the result back to see the difference in the plot. Here's an example that uses `theme()` to restyle the y-axis text of the dot plot ```{r, fig.width=8, fig.height=6} library(ggplot2) p[[1]] <- p[[1]] + theme(axis.title.y = element_text(family = "Times", colour="blue", size=24)) p ``` ### Changing the scale colours of a subplot You can change the colours used by the scales in the same way using the `scale` functions, though as the type of scale is different for the dot plot and bootstrap plot you will need to apply a different scale for each. For the dot plot, use a discrete scale e.g `scale_colour_manual()`, `scale_colour_viridis_d()` or `scale_colour_brewer(type = "qual")` ```{r, fig.width=8, fig.height=6} p[[1]] <- p[[1]] + scale_colour_manual(values = c("blue", "#440000")) p p[[1]] <- p[[1]] + scale_colour_viridis_d() p p[[1]] <- p[[1]] + scale_colour_brewer(type="qual", palette="Accent") p ``` For the percentile plot, use only `scale_colour_manual()` with specified colours. Annoyingly, this rewrites the other values associated with the scale each time, so you'll need to replace those. ```{r, fig.width=8, fig.height=6} p[[2]] <- p[[2]] + scale_fill_manual( values = c("blue", "pink", "yellow"), name = "bootstrap percentile", labels=c("lower", "non-significant", "higher"), guide = guide_legend(reverse=TRUE) ) p ```