theme_default <- theme_light()+
  theme(
    panel.grid.major = element_blank()
    , panel.grid.minor = element_blank()
  )
label_millions <- function(x) {
  paste0(format(x / 1e6, big.mark = " "), " Mi")
}
label_millions_round <- function(x,digits) {
  paste0(format(round((x / 1e6),digits), big.mark = " "), " Mi")
}

pallet <- c(
  'Not Important' = '#5546a4'
  , 'Somewhat Important' = '#8579bb'
  , 'Important' = '#9693be'
  , 'Very Important' = '#b5aed4'
)

df <- tibble(
  categ = c(
    rep('Data-driven decision-making',4),
    rep('Interpreting data visualization & dashboards',4),
    rep('Data analysis and manipulation',4),
    rep('Creating data visualization & dashboards',4),
    rep('Business intelligence tools',4),
    rep('Data storytelling',4),
    rep('Working with databases',4),
    rep('Data engineering',4),
    rep('Machine learning',4),
    rep('Programming',4)
  )
  , ordem = rep(1:4,10)
  , factor = rep(c('Not Important','Somewhat Important',
                   'Important','Very Important'),10)
  , prob = c(
    0.06, 0.1 , 0.3 , 0.54
    , 0.05, 0.12, 0.37, 0.46
    , 0.07, 0.13, 0.3 , 0.5
    , 0.09, 0.15, 0.35, 0.41
    , 0.1 , 0.16, 0.32, 0.42
    , 0.12, 0.14, 0.33, 0.41
    , 0.2 , 0.15, 0.31, 0.34
    , 0.22, 0.19, 0.25, 0.34
    , 0.23, 0.19, 0.25, 0.33
    , 0.33, 0.12, 0.21, 0.34
  )
)

Base plot

df %>% 
  ggplot(aes(x = categ, y = prob, fill = factor))+
  geom_col()

Add values in the plot

df %<>% 
  mutate(text_color = ifelse(factor == 'Not Important','white','black')) 

df %>% 
  ggplot(aes(x = categ, y = prob, fill = factor))+
  geom_col(width = .6)+
  geom_text(
    aes(label = prob,group = factor),
    position = position_stack(.5)
  )+
  theme_default

Coordenaties Flip

df %<>% 
  mutate(text_color = ifelse(factor == 'Not Important','white','black')) 

df %>% 
  ggplot(aes(x = categ, y = prob, fill = factor))+
  geom_col(width = .6)+
  geom_text(
    aes(label = prob,group = factor),
    position = position_stack(.5)
  )+
  coord_flip()+
  xlab('')+ylab('')+
  theme_default+
  theme(legend.position = 'top')

Add colours

df %<>% 
  mutate(text_color = ifelse(factor == 'Not Important','white','black')) 

df %>% 
  ggplot(aes(x = categ, y = prob, fill = factor))+
  geom_col(width = .6)+
  geom_text(
    aes(label = prob,group = factor),
    position = position_stack(.5)
  )+
  coord_flip()+
  scale_fill_manual(values = pallet)+
  scale_colour_manual(values = c('black','white'), guide = "none")+
  xlab('')+ylab('')+
  theme_default+
  theme(legend.position = 'top')

Reorder factors

df %<>%
  mutate(
    percent = prob * 100,
    percent_string = paste0(sprintf("%02d", round(percent)),'%')
  )
df_ord <- df %>% 
  filter(ordem == 1) %>% 
  arrange(desc(prob)) %>% 
  mutate(ordem_fator = 1:10) %>% 
  dplyr::select(categ,ordem_fator)
df %>% 
  inner_join(df_ord, 'categ') %>% 
  mutate(text_color = ifelse(factor == 'Not Important','white','black')) %>% 
  ggplot(aes(
    x = reorder(categ, ordem_fator)
    , y = prob
    , fill = reorder(factor, desc(ordem))
    , label = percent_string
  ))+
  geom_col(width = .6)+
  geom_text(aes(
    group = reorder(factor, desc(ordem)),
    colour = text_color
  )
  , position = position_stack(vjust = .6)
  )+
  scale_fill_manual(values = pallet)+
  scale_colour_manual(values = c('black','white'), guide = "none")+
  xlab('')+ylab('')+
  coord_flip()+
  theme_default+
  theme(legend.position = 'top')

Add titles, subtitles and remove legend name

#### {r, fig.width=10, fig.height=8}
df %>% 
  inner_join(df_ord, 'categ') %>% 
  mutate(text_color = ifelse(factor == 'Not Important','white','black')) %>% 
  ggplot(aes(
    x = reorder(categ, ordem_fator)
    , y = prob
    , fill = reorder(factor, desc(ordem))
    , label = percent_string
  ))+
  geom_col(width = .6)+
  geom_text(aes(
    group = reorder(factor, desc(ordem)),
    colour = text_color
  )
  , position = position_stack(vjust = .6)
  )+
  scale_fill_manual(values = pallet)+
  scale_colour_manual(values = c('black','white'), guide = "none")+
  coord_flip()+
  xlab('')+ylab('')+
  labs(
    title = 'Data skills have grown in importance for leaders, with descriptive analytics being a top skill leaders are looking to grow'
    , subtitle = '**Question asked:** "How important, if at all, are the following data skills for the day-to-day tasks of employees in your organization?"'
    , fill = NULL
  )+
  theme_default+
  theme(
    legend.position = 'top'
    , plot.title = element_text(hjust = 0.5)
    , plot.subtitle = element_markdown(hjust = 0.5)
    , panel.border = element_blank()
  )