---
title: "Shot Chart Practice"
author: "Alex Stransky"
date: "January 11, 2018"
output: html_notebook
---

```{r echo = FALSE, warning = FALSE, message = FALSE}
require(ggplot2)
require(dplyr)
require(jsonlite)
require(httr)
require(hexbin)
require(shiny)
require(plotly)
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
setwd("~/R/Basketball")
source("players_data.R")
source("plot_court.R")
source("fetch_shots.R")
source("hex_chart.R")
source("scatter_chart.R")
source("heatmap_chart.R")
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
korver = find_player_id_by_name("Kyle Korver")
korver_shots = fetch_shots_by_player_id_and_season(korver, "2017-18")
```

```{r echo = FALSE, warning = FALSE, message = FALSE, fig.width=10, fig.height=9}
g <- generate_hex_chart(calculate_hexbins_from_shots(korver_shots$player, korver_shots$league_averages, min_radius_factor = 0.6))
g + ggtitle(label = "Kyle Korver", subtitle = "2017-18 Shot Chart") +
  theme(plot.title = element_text(size = 24, face = "bold", colour = "#000004", hjust = 0.5),
        plot.subtitle = element_text(size = 20, colour = "#000004", hjust = 0.5),
        legend.title = element_text(size = 18, colour = "#000004"))
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
gg <- generate_scatter_chart(korver_shots$player)
gg <- gg + ggtitle(label = "Kyle Korver\n2017-18 Shot Chart") +
  theme(plot.title = element_text(size = 18, face = "bold", colour = "#000004", hjust = 0.5),
        plot.subtitle = element_text(size = 16, colour = "#000004", hjust = 0.5),
        plot.background = element_rect(fill = "#ffffff"))

ggplotly(gg, tooltip = "text") %>%
  layout(autosize = F, width = 625, height = 500)
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
generate_heatmap_chart(korver_shots$player) +
  ggtitle("Kyle Korver", subtitle = "2017-18 Heat Map") +
  theme(plot.title = element_text(size = 18, color = "#ffffff", face = "bold", hjust = 0.5),
        plot.subtitle = element_text(size = 16, color = "#ffffff", hjust = 0.5),
        plot.background = element_rect(fill = "#000004"))
```


```{r echo = FALSE, warning = FALSE, message = FALSE}
klay <- find_player_id_by_name("Klay Thompson")
klay_shots <- fetch_shots_by_player_id_and_season(klay, "2016-17")
klay_shots_60 <- filter(klay_shots$player, klay_shots$player$game_date == 20161205)
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
gg <- generate_scatter_chart(klay_shots_60)
gg <- gg + ggtitle(label = "Klay Thompson\n60 Point Game") +
  theme(plot.title = element_text(size = 18, face = "bold", colour = "#000004", hjust = 0.5),
        plot.subtitle = element_text(size = 16, colour = "#000004", hjust = 0.5),
        plot.background = element_rect(fill = "#ffffff"))
ggplotly(gg, tooltip = "text") %>%
  layout(autosize = F, width = 625, height = 500)
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
book <- find_player_id_by_name("Devin Booker")
book_shots <- fetch_shots_by_player_id_and_season(book, "2016-17")
```

```{r echo = FALSE, warning = FALSE, message = FALSE, fig.width=10, fig.height=9}
g <- generate_hex_chart(calculate_hexbins_from_shots(book_shots$player, book_shots$league_averages, min_radius_factor = 0.6))
g + ggtitle(label = "Devin Booker", subtitle = "2016-17 vs. League Average") +
  theme(plot.title = element_text(size = 24, face = "bold", colour = "#000004", hjust = 0.5),
        plot.subtitle = element_text(size = 20, colour = "#000004", hjust = 0.5),
        legend.title = element_text(size = 18, colour = "#000004"))
```

```{r echo = FALSE, warning = FALSE, message = FALSE, fig.width=10, fig.height=9}
g <- generate_hex_chart(calculate_hexbins_from_shots(book_shots$player, book_shots$league_averages, min_radius_factor = 0.6), metric = "bounded_fg_pct")
g + ggtitle(label = "Devin Booker", subtitle = "2016-17 Shot Chart") +
  theme(plot.title = element_text(size = 24, face = "bold", colour = "#000004", hjust = 0.5),
        plot.subtitle = element_text(size = 20, colour = "#000004", hjust = 0.5),
        legend.title = element_text(size = 18, colour = "#000004"))
```

```{r echo = FALSE, warning = FALSE, message = FALSE, fig.width=10, fig.height=9}
g <- generate_hex_chart(calculate_hexbins_from_shots(book_shots$player, book_shots$league_averages, min_radius_factor = 0.6), metric = "bounded_points_per_shot")
g + ggtitle(label = "Devin Booker", subtitle = "2016-17 Points Per Shot") +
  theme(plot.title = element_text(size = 24, face = "bold", colour = "#000004", hjust = 0.5),
        plot.subtitle = element_text(size = 20, colour = "#000004", hjust = 0.5),
        legend.title = element_text(size = 18, colour = "#000004"))
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
book_shots_70 <- filter(book_shots$player, book_shots$player$game_date == 20170324)
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
gg <- generate_scatter_chart(book_shots_70)
gg <- gg + ggtitle(label = "Devin Booker\n70 Point Game") +
  theme(plot.title = element_text(size = 18, face = "bold", colour = "#000004", hjust = 0.5),
        plot.subtitle = element_text(size = 16, colour = "#000004", hjust = 0.5),
        plot.background = element_rect(fill = "#ffffff"))
ggplotly(gg, tooltip = "text") %>%
  layout(autosize = F, width = 625, height = 500)
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
generate_heatmap_chart(book_shots$player) +
  ggtitle("Devin Booker", subtitle = "2016-17 Heat Map") +
  theme(plot.title = element_text(size = 18, color = "#ffffff", hjust = 0.5),
        plot.subtitle = element_text(size = 16, color = "#ffffff", hjust = 0.5),
        plot.background = element_rect(fill = "#000004"))
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
book_shots_out <- filter(book_shots$player, book_shots$player$shot_zone_basic != "Restricted Area")
```

```{r echo = FALSE, warning = FALSE, message = FALSE}
generate_heatmap_chart(book_shots_out) +
  ggtitle("Devin Booker", subtitle = "2016-17 Heat Map (non-Restricted Area)") +
  theme(plot.title = element_text(size = 18, color = "#ffffff", hjust = 0.5),
        plot.subtitle = element_text(size = 16, color = "#ffffff", hjust = 0.5),
        plot.background = element_rect(fill = "#000004"))
```

