---
title: "Controlling Plot Aesthetics"
output: rmarkdown::html_vignette
description: |
  Loading in of sample datasets for dabestr.
vignette: >
  %\VignetteIndexEntry{Controlling Plot Aesthetics}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r setup, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

Controlling plot aesthetics is very simple in dabestr. An integral part to the 
design of dabestr is to allow its users to freely adjust the various components
of a DABEST estimation plot, allowing for the most ideal looking plot to be
produced.

## Getting started
At this point, we assume that you have already obtained the `dabest_effectsize_obj`.
To add and adjust specific plot components, simply add it as a argument into the 
`dabest_plot()` function.  

```{r, eval = FALSE}
dabest_plot(
  dabest_effectsize_obj,
  float_contrast = TRUE,
  plot_component = "adjustment_value"
)
```

## Adjusting Text
All text elements in the estimation plot can be adjusted. This includes the value,
the size and even removal of the text elements completely.

### Size
The following parameters are responsible for adjusting the size of the text elements.

- `swarm_x_text`: Default 11. Numeric value determining the font size of the x-axis of the swarm plot.
- `swarm_y_text`: Default 15. Numeric value determining the font size of the y-axis of the swarm plot.
- `contrast_x_text`: Default 11. Numeric value determining the font size of the x-axis of the contrast plot.
- `contrast_y_text`: Default 15. Numeric value determining the font size of the y-axis of the contrast plot.

```{r, include = FALSE}
library(dabestr)

data(non_proportional_data)
data(proportional_data)
data(deltadelta_data)
dabest_twogroup_obj.mean_diff <- load(non_proportional_data, x = Group, y = Measurement, idx = c("Control 1", "Test 1")) %>%
  mean_diff()

dabest_multigroup_obj.mean_diff <- load(non_proportional_data,
  x = Group, y = Measurement,
  idx = list(c("Control 1", "Test 1", "Test 2"), c("Control 2", "Test 3"))
) %>%
  mean_diff()

dabest_unpaired_props.mean_diff <- load(proportional_data,
  x = Group, y = Success,
  idx = list(c("Control 1", "Test 1")),
  proportional = TRUE
) %>%
  mean_diff()

dabest_paired_props.mean_diff <- load(proportional_data,
  x = Group, y = Success,
  idx = list(c("Control 1", "Test 1", "Test 2", "Test 3"), c("Control 2", "Test 4")),
  proportional = TRUE, paired = "sequential",
  id_col = ID
) %>%
  mean_diff()
```

```{r}
dabest_plot(
  dabest_twogroup_obj.mean_diff,
  float_contrast = TRUE,
  swarm_x_text = 30,
  swarm_y_text = 1,
  contrast_x_text = 30,
  contrast_y_text = 5
)
```

### Content
The following parameters are responsible for adjusting the content of the text elements.

- `swarm_label`: Default "value" or "proportion of success" for proportion plots. Label for the y-axis of the swarm plot.
- `contrast_label`: Default "effect size", based on the effect sizes as given in `effect_size()`. Label for the y-axis of the contrast plot.
- `delta2_label`: Default NULL. Label for the y-label for the delta-delta plot. 

```{r}
dabest_plot(
  dabest_twogroup_obj.mean_diff,
  float_contrast = TRUE,
  swarm_label = "I love estimation statistics.",
  contrast_label = "I love it more than you do!"
)
```

## Adjusting Visual Elements
Visual elements refer to the shapes, lines, symbols or other visual representations
that convey data and relationship in a plot. Many of these elements can be adjusted in dabestr.

### Markers
The following parameters are responsible for adjusting the properties of various markers
in the plot.

- `raw_marker_size` Default 1.5. Numeric value determining the size of the points used in the swarm plot. 
- `raw_marker_alpha` Default 1. Numeric value determining the transparency of the points in the swarm plot.
- `raw_bar_width` Default 0.3. Numeric value determining the width of the bar in the sankey diagram.
- `raw_marker_spread` Default 2. The distance between the points if it is a swarm plot.
- `raw_marker_side_shift` Default 0. The horizontal distance that the swarm plot points are moved in the
direction of the `asymmetric_side`..
- `tufte_size` Default 0.8. Numeric value determining the size of the tufte line in the swarm plot.
- `es_marker_size` Default 0.5. Numeric value determining the size of the points used in the delta plot.
- `es_line_size` Default 0.8. Numeric value determining the size of the ci line in the delta plot.

```{r}
A <- dabest_plot(dabest_twogroup_obj.mean_diff,
  float_contrast = TRUE,
  swarm_label = "", contrast_label = "",
  raw_marker_size = 1, raw_marker_alpha = 1
)
B <- dabest_plot(dabest_twogroup_obj.mean_diff,
  float_contrast = TRUE,
  swarm_label = "", contrast_label = "",
  raw_marker_size = 2, raw_marker_alpha = 0.5
)

cowplot::plot_grid(
  plotlist = list(A, B),
  nrow = 1,
  ncol = 2,
  labels = "AUTO"
)
```

### Axes
The following parameters are responsible for adjusting the y-axis limits for the
rawdata axes and contrast axes of the  plot. By adjusting the range, it gives 
rise to the effect of zooming in or out of the plot.

- `swarm_ylim` Default NULL. Vector containing the y-limits for the swarm plot.
- `contrast_ylim` Default NULL. Vector containing the y-limits for the delta plot.
- `delta2_ylim` Default NULL. Vector containing the y-limits for the delta-delta plot.

If your effect size is qualitatively inverted (ie. a smaller value is a better
outcome), you can invert the vector passed to `contrast_ylim.`


```{r}
dabest_plot(dabest_multigroup_obj.mean_diff,
  float_contrast = FALSE,
  contrast_label = "More negative is better!",
  swarm_ylim = c(1, 5), contrast_ylim = c(0.7, -1.2)
)
```

### Palettes
The following parameters are responsible for adjusting the plot palettes of the 
plot.

- `custom_palette` Default "d3". String. The following palettes are available for use:
npg, aaas, nejm, lancet, jama, jco, ucscgb, d3, locuszoom, igv, cosmic, uchicago, brewer, 
ordinal, viridis_d.

```{r}
npg <- dabest_plot(dabest_unpaired_props.mean_diff,
  swarm_label = "", contrast_label = "",
  custom_palette = "npg"
)
nejm <- dabest_plot(dabest_unpaired_props.mean_diff,
  swarm_label = "", contrast_label = "",
  custom_palette = "nejm"
)
jama <- dabest_plot(dabest_unpaired_props.mean_diff,
  swarm_label = "", contrast_label = "",
  custom_palette = "jama"
)
locuszoom <- dabest_plot(dabest_unpaired_props.mean_diff,
  swarm_label = "", contrast_label = "",
  custom_palette = "locuszoom"
)

cowplot::plot_grid(
  plotlist = list(npg, nejm, jama, locuszoom),
  nrow = 2,
  ncol = 2
)
```

### Misc
- `sankey` Default TRUE. Boolean value determining if the flows between the bar charts will be plotted.
```{r}
dabest_plot(dabest_paired_props.mean_diff, sankey = FALSE, raw_bar_width = 0.15)
```

- `flow` Default TRUE. Boolean value determining whether the bars will be plotted in pairs.
```{r}
dabest_plot(dabest_paired_props.mean_diff, flow = FALSE, raw_bar_width = 0.15)
```

- `asymmetric_side` Default "right". Can be either "right" or "left". Controls which side the swarm points are shown.
```{r}
right <- dabest_plot(dabest_twogroup_obj.mean_diff,
  float_contrast = FALSE,
  swarm_label = "", contrast_label = "",
  asymmetric_side = "right"
)
left <- dabest_plot(dabest_twogroup_obj.mean_diff,
  float_contrast = FALSE,
  swarm_label = "", contrast_label = "",
  asymmetric_side = "left"
)

cowplot::plot_grid(
  plotlist = list(right, left),
  nrow = 1,
  ncol = 2
)
```

- `show_delta2` Default FALSE. Boolean value determining if the delta-delta plot is shown.
- `show_mini_meta` Default FALSE. Boolean value determining if the weighted average plot is shown. 
If False, the resulting graph would be identical to a multiple two-groups plot.
- `show_zero_dot` Default TRUE. Boolean value determining if there is a dot on 
the zero line of the effect size for the control-control group.
- `show_baseline_ec` Default FALSE. Boolean value determining whether the baseline curve is shown.
```{r}
dabest_plot(dabest_multigroup_obj.mean_diff,
  float_contrast = FALSE,
  show_baseline_ec = TRUE
)
```
