--- title: "Exploration of Pixar Films Rankings" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Exploration of Pixar Films Rankings} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r setup} library(pixarfilms) library(ggplot2) library(dplyr) library(forcats) library(gghighlight) ``` ## Distribution of rankings ```{r} pixar_rankings |> mutate(film = fct_reorder(film, ranking, .fun = median, .desc = TRUE)) |> ggplot(aes(x = film, y = ranking)) + geom_boxplot(fill = "#89B9F7") + coord_flip() + labs( title = "Distribution of Pixar Films rankings", subtitle = "Ordered by median ranking", x = "Film", y = "Ranking" ) + theme_bw() # Save out for presentation use # ggsave( # here::here("vignettes", "pixar_rankings.png"), # width = 8, # height = 5 # ) ``` ## Highlighting variation in rankings A couple of things we notice from the boxplot above are that some films have a low variance in their rankings, while others have a higher variance. We can calculate the standard deviation of the rankings for each film to see which films have the lowest variance. ```{r} summary_ranks <- pixar_rankings |> group_by(film) |> summarize( sd = sd(ranking), q1 = quantile(ranking, 0.25), q3 = quantile(ranking, 0.75), iqr = IQR(ranking), lower_bound = q1 - 1.5 * iqr, upper_bound = q3 + 1.5 * iqr ) |> arrange(sd) print(summary_ranks) ``` We can see that `r head(summary_ranks$film)` have the lowest variance in their rankings. We can highlight these films in the boxplot above to see how they compare to the other films. ```{r} pixar_rankings |> mutate(film = fct_reorder(film, ranking, .fun = median, .desc = TRUE)) |> ggplot(aes(x = film, y = ranking)) + geom_boxplot(fill = "#89B9F7") + coord_flip() + gghighlight( film %in% pull(head(arrange(summary_ranks, sd), 3), film), use_group_by = FALSE ) + labs( title = "Lowest variation of Pixar Films rankings", subtitle = "Ordered by median ranking", x = "Film", y = "Ranking" ) + theme_bw() # Save out for presentation use # ggsave( # here::here("vignettes", "pixar_rankings.png"), # width = 8, # height = 5 # ) ``` We can also see that `r summary_ranks |> arrange(iqr) |> head(5) |> pull(film)` have the smallest IQR ranges in their rankings. We can highlight these films in the boxplot above to see how they compare to the other films. ```{r} pixar_rankings |> mutate(film = fct_reorder(film, ranking, .fun = median, .desc = TRUE)) |> ggplot(aes(x = film, y = ranking)) + geom_boxplot(fill = "#89B9F7") + coord_flip() + gghighlight( film %in% pull(head(arrange(summary_ranks, iqr), 3), film), use_group_by = FALSE ) + labs( title = "Smallest IQRs of Pixar Films rankings", subtitle = "Ordered by median ranking", x = "Film", y = "Ranking" ) + theme_bw() # Save out for presentation use # ggsave( # here::here("vignettes", "pixar_rankings.png"), # width = 8, # height = 5 # ) ``` Now let's highlight the highest variation in rankings. We can see that `r head(arrange(summary_ranks, desc(sd)), 5) |> pull(film)` have the highest variance in their rankings. We can highlight these films in the boxplot above to see how they compare to the other films. ```{r} pixar_rankings |> mutate(film = fct_reorder(film, ranking, .fun = median, .desc = TRUE)) |> ggplot(aes(x = film, y = ranking)) + geom_boxplot(fill = "#89B9F7") + coord_flip() + gghighlight( film %in% pull(head(arrange(summary_ranks, desc(sd)), 3), film), use_group_by = FALSE ) + labs( title = "Highest variation of Pixar Films rankings", subtitle = "Ordered by median ranking", x = "Film", y = "Ranking" ) + theme_bw() # Save out for presentation use # ggsave( # here::here("vignettes", "pixar_rankings.png"), # width = 8, # height = 5 # ) ``` Now let's highlight the outliers in the rankings. ```{r} outlier_films <- pixar_rankings |> left_join(summary_ranks, by = "film") |> filter(ranking < lower_bound | ranking > upper_bound) |> distinct(film) pixar_rankings |> mutate(film = fct_reorder(film, ranking, .fun = median, .desc = TRUE)) |> ggplot(aes(x = film, y = ranking)) + geom_boxplot(fill = "#89B9F7") + coord_flip() + gghighlight( film %in% outlier_films$film, use_group_by = FALSE ) + labs( title = "Pixar Films rankings with outliers", subtitle = "Ordered by median ranking", x = "Film", y = "Ranking" ) + theme_bw() # Save out for presentation use # ggsave( # here::here("vignettes", "pixar_rankings.png"), # width = 8, # height = 5 # ) ```