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()
)
