---
title: "Overview of duke"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Overview of duke}
  %\VignetteEncoding{UTF-8}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  chunk_output_type: console
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 8,
  fig.asp = 0.618
)
```

```{r setup, warning = FALSE}

library(duke)
library(palmerpenguins)
library(dplyr)
library(ggplot2)
library(ggmosaic)
```

This vignette aims to comprehensively demonstrate the use and functionality of the package `duke`. `duke` is fully integrated with the `ggplot2` and allows for the creation of Duke official branded visualizations that are color blind friendly. 

```{r students, warning = FALSE}
student_names <- c("Jack", "Annie", "Paul", "Aidan", "Jake", "Josh", "Grace", "Suzy", "Beth", "Taylor", "Tanner", "Lisa", "Jimmy", "Larry", "Patricia", "Laura", "Yasmin", "Tim")
student_grades <- c("A+", "B", "A+", "C", "D", "A+", "E", "C", "B-", "B-", "D", "A-", "B+", "A-", "A-", "D", "B", "E")

students <- tibble(student = student_names, grade = student_grades)
```


## Scatter Plot - Continuous Color

```{r scatter c, warning = FALSE}
plot <- ggplot(penguins, aes(x = bill_length_mm, y = bill_depth_mm)) +
  geom_point(aes(color = body_mass_g)) +
  labs(
    title = "Bill Length vs. Bill Depth", 
    x = "Bill Length (mm)", 
    y = "Bill Depth (mm)"
  )

plot +
  scale_duke_continuous() +
  theme_duke()

plot +
  geom_point(aes(shape = species)) +
  scale_duke_continuous() +
  theme_duke()

plot +
  scale_duke_continuous() +
  theme_minimal()
```

## Scatter Plot - Discrete Color

```{r scatter d, warning = FALSE}
plot1 <- ggplot(penguins, aes(x = bill_length_mm, y = bill_depth_mm, color = species)) +
  geom_point(size = 2) +
  labs(title = "Bill Length vs. Bill Depth", x = "Bill Length (mm)", y = "Bill Depth (mm)")

ggplot(penguins, aes(x = bill_length_mm, y = bill_depth_mm)) +
  geom_point(aes(color = species)) +
  labs(
    title = "Bill Length vs. Bill Depth", 
    subtitle = "This is the subtitle", 
    caption = "All text is in Duke Royal Blue", 
    x = "Bill Length (mm)", 
    y = "Bill Depth (mm)"
  ) +
  facet_wrap(~species) +
  theme_duke() +
  scale_duke_color_discrete()

plot1 +
  theme_duke() +
  scale_duke_color_discrete()

plot1 +
  scale_duke_color_discrete() +
  theme_minimal()
```


## Bar Plot

```{r bar, warning = FALSE}
plot2 <- ggplot(penguins, aes(x = species, fill = species)) +
  geom_bar() +
  labs(title = "Distribution of Penguin Species", x = "Species", y = "Count")

m_penguins <- penguins %>%
  dplyr::filter(sex == "male")

plot2.1 <- ggplot(m_penguins, aes(x = sex, fill = sex)) +
  geom_bar()

plot2.1 +
  scale_duke_fill_discrete() +
  theme_duke()


# 8-category plot
plot2.2 <- ggplot(students, aes(x = grade, fill = grade)) +
  geom_bar()

plot2.2 +
  scale_duke_fill_discrete() +
  theme_duke()

# 7-category plot
plot2.3 <- students %>%
  slice(-13) %>%
  ggplot(aes(x = grade, fill = grade)) +
  geom_bar()

plot2.3 +
  scale_duke_fill_discrete() +
  theme_duke()

# 6-category plot
plot2.4 <- students %>%
  slice(-c(9, 10, 13)) %>%
  ggplot(aes(x = grade, fill = grade)) +
  geom_bar()

plot2.4 +
  scale_duke_fill_discrete() +
  theme_duke()

# 5-category plot
plot2.4 <- students %>%
  slice(-c(9, 10, 13, 7, 18)) %>%
  ggplot(aes(x = grade, fill = grade)) +
  geom_bar()

plot2.4 +
  scale_duke_fill_discrete() +
  theme_duke()

# 4-category plot
plot2.5 <- students %>%
  slice(-c(9, 10, 13, 7, 18, 4, 8)) %>%
  ggplot(aes(x = grade, fill = grade)) +
  geom_bar()

plot2.5 +
  scale_duke_fill_discrete() +
  theme_duke()
```

## Histogram

```{r hist, warning = FALSE}
plot3 <- ggplot2::ggplot(penguins, aes(body_mass_g)) +
  geom_histogram(ggplot2::aes(fill = species), alpha = 0.8) +
  labs(title = "Distribution of Penguin Body Mass", caption = "(Colors used) \n Duke Royal Blue, Duke Navy Blue, Copper", x = "Body Mass (g)", y = "Count")

plot3 +
  scale_duke_fill_discrete() +
  theme_duke()

plot3 +
  scale_duke_fill_discrete() +
  theme_minimal()
```

## Box Plot

```{r box, warning = FALSE}
plot4 <- ggplot2::ggplot(penguins, ggplot2::aes(sex, body_mass_g)) +
  ggplot2::geom_boxplot() +
  ggplot2::labs(title = "Comparison of Body Mass By Sex", x = "Sex", y = "Body Mass (g)")

plot4 +
  theme_duke()

plot4 +
  theme_minimal()
```

## Density Plot

```{r density, warning = FALSE}
plot5 <- ggplot2::ggplot(penguins, ggplot2::aes(bill_depth_mm)) +
  ggplot2::geom_density(ggplot2::aes(fill = species)) +
  ggplot2::labs(title = "Density of Penguin Bill Depth", x = "Bill Depth (mm)", y = "Densiy")

plot5 +
  scale_duke_fill_discrete() +
  theme_duke()

plot5 +
  scale_duke_fill_discrete() +
  theme_minimal()
```

## Jitter Plot - Discrete Color

```{r jitter d, warning = FALSE}
plot6 <- ggplot2::ggplot(penguins, ggplot2::aes(year, body_mass_g)) +
  ggplot2::geom_jitter(ggplot2::aes(color = species)) +
  ggplot2::labs(title = "Comparison of Body Mass By Year", x = "Year", y = "Body Mass (g)")

plot6 +
  scale_duke_color_discrete() +
  theme_duke()

plot6 +
  scale_duke_color_discrete() +
  theme_minimal()
```
## Jitter Plot - Discrete Color

```{r jitter c, warning = FALSE}
plot6.1 <- ggplot2::ggplot(penguins, ggplot2::aes(year, body_mass_g)) +
  ggplot2::geom_jitter(ggplot2::aes(color = bill_length_mm)) +
  ggplot2::labs(title = "Comparison of Body Mass By Year", x = "Year", y = "Body Mass (g)")

plot6.1 +
  scale_duke_continuous() +
  theme_duke()

plot6.1 +
  scale_duke_continuous() +
  theme_minimal()
```

## Line Plot

```{r line plot, warning = FALSE}
yearly_avg <- penguins %>%
  filter(!is.na(bill_length_mm)) %>%
  group_by(island, year) %>%
  summarize(island, year, mean = mean(bill_length_mm)) %>%
  distinct(island, year, .keep_all = T)

lineplot <- ggplot(data = yearly_avg, aes(x = as.factor(year), y = mean, group = island)) +
  geom_line(aes(color = island), linewidth = 1) +
  geom_point(aes(color = island)) +
  labs(title = "Average Island Bill Length(mm) Per Year", x = "Year", y = "Average Bill Length (mm)") +
  theme_duke() +
  scale_duke_color_discrete()
lineplot

# with point shape and line pattern
lineplot.2 <- ggplot(data = yearly_avg, aes(x = as.factor(year), y = mean, group = island)) +
  geom_line(aes(color = island, linetype = island), linewidth = 1) +
  geom_point(aes(color = island, shape = island)) +
  labs(title = "Average Island Bill Length(mm) Per Year", x = "Year", y = "Average Bill Length (mm)") +
  theme_duke() +
  scale_duke_color_discrete()
lineplot.2
```


## Mosaic Plot 

```{r mosaic plot, warning = FALSE}
plot7 <- ggplot(data = penguins) +
  ggmosaic::geom_mosaic(aes(x = ggmosaic::product(sex, island), fill = sex)) +
  labs(title = "Penguin Sex vs. Island", x = "Island", y = "Penguin Sex", caption = "(Color from top to bottom) \n Granite, Duke Navy Blue, Duke Royal Blue")

plot7 +
  scale_duke_fill_discrete() +
  theme_duke()

plot7 +
  scale_duke_fill_discrete() +
  theme_minimal()
```

# Label Plot

```{r label, warning = FALSE}
plot8 <- ggplot2::ggplot(penguins, ggplot2::aes(bill_length_mm, bill_depth_mm, fill = island)) +
  ggplot2::geom_label(aes(label = island)) +
  ggplot2::labs(title = "Bill Length/Depth by Island", x = "Bill Length (mm)", y = "Bill Depth (mm)")

plot8 +
  scale_duke_fill_discrete() +
  theme_duke()

plot8 +
  scale_duke_fill_discrete() +
  theme_minimal()
```

## Quantile Plot

```{r quantile, warning = FALSE}
plot9 <- ggplot2::ggplot(penguins, ggplot2::aes(bill_length_mm, bill_depth_mm, color = species)) +
  ggplot2::geom_quantile() +
  ggplot2::labs(title = "Bill Length/Depth Quantiles", x = "Bill Length (mm)", y = "Bill Depth (mm)")

plot9 +
  scale_duke_color_discrete() +
  theme_duke()

plot9 +
  scale_duke_color_discrete() +
  theme_minimal()
```

## Area Plot

```{r area, warning = FALSE}
plot10 <- ggplot2::ggplot(penguins, ggplot2::aes(body_mass_g, fill = species)) +
  ggplot2::geom_area(stat = "bin") +
  ggplot2::labs(title = "Area of Body Mass Index", x = "BMI")

plot10 +
  scale_duke_fill_discrete() +
  theme_duke()

plot10 +
  scale_duke_fill_discrete() +
  theme_minimal()
```

## Dot Plot

```{r dotpot, warning = FALSE}
plot11 <- ggplot2::ggplot(penguins, ggplot2::aes(body_mass_g)) +
  ggplot2::geom_dotplot(aes(fill = species)) +
  ggplot2::labs(title = "Dotplot of BMI", x = "BMI")

plot11 +
  scale_duke_fill_discrete() +
  theme_duke()

plot11 +
  scale_duke_fill_discrete() +
  theme_minimal()
```

## Frequency Polynomial Plot

```{r freqplot, warning = FALSE}
plot12 <- ggplot2::ggplot(penguins, ggplot2::aes(body_mass_g)) +
  ggplot2::geom_freqpoly(aes(color = species)) +
  ggplot2::labs(title = "Frequency Polynomial Plot of BMI", x = "BMI")

plot12 +
  scale_duke_color_discrete() +
  theme_duke()

plot12 +
  scale_duke_color_discrete() +
  theme_minimal()
```

## Column Plot

```{r colplot, warning = FALSE}
plot13 <- ggplot2::ggplot(penguins, ggplot2::aes(species, body_mass_g, color = species)) +
  ggplot2::geom_col() +
  ggplot2::labs(title = "BMI By Species of BMI", x = "Species", y = "BMI")

plot13 +
  scale_duke_color_discrete() +
  theme_duke()

plot13 +
  scale_duke_color_discrete() +
  theme_minimal()
```

## Violin Plot

```{r violinplot, warning = FALSE}
plot14 <- ggplot2::ggplot(penguins, ggplot2::aes(species, body_mass_g, fill = species)) +
  geom_violin(scale = "area") +
  ggplot2::labs(title = "BMI By Species", x = "Species", y = "BMI")

plot14 +
  scale_duke_fill_discrete() +
  theme_duke()

plot14 +
  scale_duke_fill_discrete() +
  theme_minimal()
```

## Count Plot

```{r countplot, warning = FALSE}
plot15 <- ggplot2::ggplot(penguins, ggplot2::aes(species, island, color = species)) +
  geom_count() +
  ggplot2::labs(title = "Species Count by Island", x = "Species", y = "Island")

plot15 +
  scale_duke_color_discrete() +
  theme_duke()

plot15 +
  scale_duke_color_discrete() +
  theme_minimal()
```

## Step Plot

```{r stepplot, warning = FALSE}
plot16 <- ggplot2::ggplot(penguins, ggplot2::aes(year, body_mass_g, color = species)) +
  geom_step()
ggplot2::labs(title = "BMI By Year", x = "Year", y = "BMI")

plot16 +
  scale_duke_color_discrete() +
  theme_duke()

plot16 +
  scale_duke_color_discrete() +
  theme_minimal()
```

## Coordinate Polar

```{r coordpol, warning = FALSE}
plot1 +
  facet_wrap(~species) +
  theme_bw() +
  scale_duke_color_discrete()
```
