---
title: "Maraca Plots - Themes and Styling"
author: "Monika Huhn"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Maraca Plots - Themes and Styling}
  %\VignetteEngine{knitr::rmarkdown}
  \usepackage[utf8]{inputenc}
---


```{r setup, include = FALSE}
knitr::opts_chunk$set(echo = TRUE, collapse = TRUE)
library(dplyr)
library(ggplot2)
library(maraca)
```

In order to give the user more options in styling their plot,
we have added a theme argument to the plotting functions.
This vignette gives an overview over the different options.

Let us first read in some data and prepare for plotting:
```{r maraca1, eval = TRUE}
library(maraca)

data(hce_scenario_a)

maraca_dat <- maraca(
  data = hce_scenario_a,
  step_outcomes = c("Outcome I", "Outcome II", "Outcome III", "Outcome IV"),
  last_outcome = "Continuous outcome",
  fixed_followup_days = 3 * 365,
  column_names = c(outcome = "GROUP", arm = "TRTP", value = "AVAL0"),
  arm_levels = c(active = "Active", control = "Control"),
  compute_win_odds = TRUE
)
```

## Default themes

By default, the plotting functions are using a theme called
"maraca". It is implicitly called so you do not have to specify
the argument `theme = "maraca"`.

```{r fig.width = 8, fig.height = 6}
plot(maraca_dat)
```

The default maraca theme adds an x- and y-axis label and angels the
x-axis text for better readability. It also uses the theme "bw"
of the ggplot2 package.
The plot colors are not styled in the default maraca theme. We include
2 different color themes by default for the users convenience,
`theme = "color1"` and `theme = "color2"`.

```{r fig.width = 8, fig.height = 6}
plot(maraca_dat, theme = "color1")
```

```{r fig.width = 8, fig.height = 6}
plot(maraca_dat, theme = "color2")
```

We kept the previous default styling of the maraca package as its
own theme, `theme = "maraca_old"`

```{r fig.width = 8, fig.height = 6}
plot(maraca_dat, theme = "maraca_old")
```

If you want to completely style your code by yourself, remove any
of the extra styling with `theme = "none"`.

```{r fig.width = 8, fig.height = 6}
plot(maraca_dat, theme = "none")
```


## Extending themes

The maraca plot is an ggplot2 object that can be styled by
adding extra styling layers, such as any ggplot2 plot.

For example, using the `theme = "none"` styling, we can add
manually the angle of the x-axis labels, remove axis texts
and style with differnt colors.

```{r fig.width = 8, fig.height = 6}
library(ggplot2)

p <- plot(maraca_dat, theme = "none")

p <- p +
  theme(
    legend.position = "bottom",
    axis.text.x.bottom = element_text(
      angle = 90,
      vjust = 0.5,
      hjust = 1
    ),
    axis.title.x = element_blank(),
    axis.title.y = element_blank()
  ) +
  scale_color_viridis_d(end = 0.8) +
  scale_fill_viridis_d(end = 0.8)

p
```

If you want to use your own color scheme on the plots,
the easiest way is to use the default styling `theme = "maraca"`
and then add the colors as an extra layer.

```{r fig.width = 8, fig.height = 6}
p <- plot(maraca_dat)

colorScheme <- c("Active" = "steelblue", "Control" = "seagreen3")

p <- p +
  scale_color_manual(values = colorScheme) +
  scale_fill_manual(values = colorScheme)

p
```

Note that the numeric x-axis labels for the continuous endpoint part of the plot
are actually text labels on the plot and cannot be directly changed using the
ggplot2 `theme()` function.

The user has 2 ways of changing these labels. One is to overwrite the default
text size for the plot. Do not forget to reset the default text size afterwards
for further plotting.

```{r fig.width = 8, fig.height = 6}
keep_default <- GeomLabel$default_aes$size

# Changing default text size for the plot
update_geom_defaults("text", list(size = 3))

plot(maraca_dat)

# Make sure to change defaults back to default for new plots
update_geom_defaults("text", list(size = keep_default))
```

Alternatively, the user can use the parameter `continuous_grid_spacing_x` in the `plot()`
function for maraca objects to create more or less grid lines and labels.

```{r fig.width = 8, fig.height = 6}
plot(maraca_dat, continuous_grid_spacing_x = 20)
```