---
title: "Reodering for Grouped Barplot"
author: "Nguyen Chi Dung"
subtitle: "Daily Graph Series"
output:
  html_document:
    code_download: yes
    # code_folding: hide
    highlight: zenburn
    theme: flatly
    toc: yes
    toc_float: yes
  word_document:
    toc: yes
---

```{r setup,include=FALSE}
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE, fig.retina=2)
```

![](C:\\Users\\Zbook\\Desktop\\pic\\multi_bar.jpg)


# Collect Data

```{r}

#==========================
#  Collect and clean data
#==========================

# Clear workspace: 
rm(list = ls())


# LOad some R packages: 
library(tidyverse)
library(rvest)

# Collect and clean data: 

link <- "https://www.kdnuggets.com/2016/09/poll-algorithms-used-data-scientists.html"


link %>% 
  read_html() %>% 
  html_nodes(xpath = '//*[@id="post-"]/table[2]') %>% 
  html_table(fill = TRUE) %>% 
  .[[1]] %>% 
  select(-All) %>% 
  mutate(Algorithm = factor(Algorithm)) %>% 
  mutate_if(is.character, function(x) {str_replace_all(x, "[^0-9]", "") %>% as.numeric()}) %>% 
  gather(sector, num, -Algorithm) -> df_long

```


# Solution 1 for Reodering

```{r, eval=FALSE}
#==========================
#       Solution 1
#==========================

# Create our orders: 

df_long %>% 
  arrange(sector, num) %>% 
  mutate(my_order = row_number()) -> df_long

# Make draft plot: 

library(extrafont)

my_colors <- c("#3E606F")
my_font <- "Roboto Condensed"

df_long %>% 
  ggplot(aes(my_order, num)) +
  geom_col(fill = my_colors) +
  facet_wrap(~ sector, scales = "free") +
  theme_bw() +
  coord_flip() + 
  geom_text(aes(label = num), hjust = 1.1, color = "white", size = 4) + 
  scale_x_continuous(breaks = df_long$my_order, labels = df_long$Algorithm) +
  theme(panel.grid = element_blank()) + 
  scale_y_discrete(expand = c(0.01, 0)) + 
  theme(axis.ticks.y = element_blank()) + 
  theme(plot.margin = unit(c(1.2, 1.2, 1.2, 1.2), "cm")) + 
  labs(x = NULL, y = NULL, 
       title = "Top 10 algorithms & methods used by Data Scientists", 
       subtitle = "Latest KDnuggets Poll identifies the list of top algorithms/methods actually used by Data Scientists.\nBecause Statistics or Visualization (and several other options) are actually not algorithms,\nthus can be better described as methods or approaches.", 
       caption = "Data Source: https://www.kdnuggets.com")


```

# Solution 2 for Reodering


```{r, eval=FALSE}
  

#==========================
#       Solution 2
#==========================

library(tidytext)
library(hrbrthemes)


df_long %>% 
  mutate(Algorithm = reorder_within(Algorithm, num, sector)) -> df_ordered


df_ordered %>% 
  ggplot(aes(Algorithm, num)) + 
  geom_col(width = 0.8) + 
  facet_wrap(~ sector, scales = "free_y") + 
  coord_flip() + 
  scale_x_reordered() + 
  theme_ft_rc(base_family = "Roboto Condensed") + 
  theme(strip.text.x = element_text(colour = "white", face = "bold", size = 13)) + 
  geom_text(aes(label = num), hjust = 1.15, color = "white", size = 4.5) + 
  theme(panel.grid = element_blank()) + 
  theme(axis.text.x = element_blank()) + 
  theme(axis.text.y = element_text(color = "white", size = 13)) + 
  theme(plot.title = element_text(size = 24)) + 
  theme(plot.subtitle = element_text(size = 13, color = "grey80")) + 
  theme(plot.caption = element_text(size = 11, face = "italic")) + 
  scale_y_discrete(expand = c(0.01, 0)) + 
  theme(plot.margin = unit(c(1.2, 1.2, 1.2, 1.2), "cm")) + 
  labs(x = NULL, y = NULL, 
       title = "Top 11 algorithms & methods used by Data Scientists", 
       subtitle = "Latest KDnuggets Poll identifies the list of top algorithms/methods actually used by Data Scientists.\nBecause Statistics or Visualization (and several other options) are actually not algorithms,\nthus can be better described as methods or approaches.", 
       caption = "Data Source: https://www.kdnuggets.com")




```


