---
title: "Lab 07 - Données temporelles et textuelles"
author: "Antoine Neuraz"
date: "22/11/2019"
output: 
  xaringan::moon_reader:
    css: ['default','css/my_style.css']
    lib_dir: libs
    seal: false
    nature:
      ratio: '4:3'
      countIncrementalSlides: false
      self-contained: true
      beforeInit: "addons/macros.js"
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, fig.asp = .7, fig.width = 12)
library(vizoR)
library(ggplot2)
library(gghighlight)
library(dplyr)
library(ggTimeSeries)
```

## TODO

#### 1. charger le dataset `us_city_populations` de la librairie `vizoR`

#### 2. tracer un line chart de l'évolution de la population des villes US

#### 3. Mettez en évidence les 5 plus grandes villes (hint: package gghighlight)
[introduction gghighlight](https://cran.r-project.org/web/packages/gghighlight/vignettes/gghighlight.html)

#### 4. Appliquez les principes de design de Tufte 

##### 5. BONUS: affichez le nom des villes directement à la fin de la ligne

#### 6. Réalisez un streamgraph des 5 plus grandes villes US (hint: package ggTimeSeries)

---

## TODO 2

#### Trouver une 3e visualization pertinente pour montrer l'évolution de la population des villes US. 

---

```{r}

data("us_city_populations")

n_cities = 5

# top_cities <- 
#   us_city_populations %>% 
#   filter(Rank <= n_cities) %>%
#   select(City, State, Region) %>% 
#   distinct()
# 
# to_plot <- filter(us_city_populations, City %in% top_cities$City)

#to_plot <- us_city_populations

last_ranks <- us_city_populations %>% 
  filter(Year == max(Year)) %>%
  mutate(last_rank = Rank) %>% 
  select(City, last_rank)

to_plot <- left_join(us_city_populations, last_ranks, by= 'City')

right_axis <-  to_plot %>% 
  group_by(City) %>% 
  top_n(1, Year) %>% 
  ungroup() %>%
  top_n(n_cities, -last_rank)

ends <- right_axis %>%
  pull(Population) 

labels <-  right_axis %>%
  pull(City)

```

---
class: full
```{r, echo = FALSE}
ggplot(to_plot, aes(x=Year, y = Population, group = City, color = City)) + 
  geom_line(size=1) + 
  #geom_text(data = subset(to_plot, Year == 2010), aes(x=Inf, y = Population, label=City), hjust = 1) +
  scale_x_continuous("", expand=c(0,0))+
  scale_y_continuous("",
                     labels=scales::comma_format(big.mark = " "),
                     sec.axis = sec_axis(~ ., breaks = ends, labels = labels ))+
  scale_color_viridis_d()+
  theme_elegant_dark()+
  theme(legend.position = "none",
        plot.margin = unit(c(1,3,1,1), "lines"), 
        axis.line.y = element_blank(),
        axis.line.x = element_blank(), 
        axis.ticks.x = element_line(), 
        panel.grid.major.y = element_line(color= 'grey30', size = .2) ) + 
  gghighlight(max(last_rank) <= n_cities, use_direct_label = FALSE, label_key = City,unhighlighted_colour = "grey20")
  
```
---
class: full
```{r, echo = FALSE}
library(ggTimeSeries)
to_plot %>% filter(City %in% labels) %>%
  ggplot(aes(x = Year, y = Population, group = City, fill = City)) +
  scale_y_continuous("", labels = scales::comma_format(big.mark = " "))+
  stat_steamgraph() +
  theme_elegant_dark() + 
  scale_fill_viridis_d() + 
  theme(plot.margin = unit(c(1,3,1,1), "lines"), 
        axis.line.y = element_blank(),
        axis.line.x = element_blank(), 
        axis.ticks.x = element_line(), 
        panel.grid.major.y = element_line(color= 'grey30', size = .2) ) 

```
---

![](bar_race.gif)

