--- title: "Line charts for population data" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{bar-chart-race} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) library(vizoR) library(ggplot2) library(gghighlight) library(dplyr) ``` ```{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 <- to_plot %>% filter(Year == max(Year)) %>% mutate(last_rank = Rank) %>% select(City, last_rank) to_plot <- left_join(to_plot, 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) ``` ```{r} ggplot(to_plot, aes(x=Year, y = Population, group = City, color = Region)) + 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 ))+ theme_elegant() + theme(legend.position = "bottom", 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= 'grey90', size = .2) ) + gghighlight(max(last_rank) <= n_cities, use_direct_label = FALSE, label_key = City) ``` ```{r} data("base_pop") n_cities = 10 # create the ranks based on census populations base_pop<- base_pop %>% group_by( annee) %>% arrange(desc(population)) %>% mutate(rang = 1:n()) %>% ungroup() top_cities <- base_pop %>% filter(rang <= n_cities) %>% select(ville, dep , region) %>% distinct() to_plot <- filter(base_pop, ville %in% top_cities$ville) #to_plot <- base_pop last_ranks <- to_plot %>% filter(annee == max(annee)) %>% mutate(last_rank = rang) %>% select(ville, last_rank) to_plot <- left_join(to_plot, last_ranks, by= 'ville') right_axis <- to_plot %>% group_by(ville) %>% top_n(1, annee) %>% ungroup() %>% top_n(n_cities, -last_rank) ends <- right_axis %>% pull(population) labels <- right_axis %>% pull(ville) ``` ```{r} ggplot(to_plot, aes(x=annee, y = population, group = ville, color = region)) + 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 ))+ theme_elegant() + theme(legend.position = "bottom", 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= 'grey90', size = .2) ) + gghighlight(max(last_rank) <= n_cities, use_direct_label = FALSE, label_key = ville) ```