Preparação

Rode esse código no início do script para habilitar as funções

library(ggplot2)

# escolha o tema
theme_set(theme_minimal())

# cores que serão utilizadas
eapi_colors <- c(
  `red`                = "#eb7071",
  `light red`          = "#f6b7b8",
  `orange`             = "#faaf61",
  `light orange`       = "#fcd5ae",
  `lighter orange`     = "#fdead6",
  `dark green`         = "#316b3c",
  `green`              = "#85ca92",
  `light green`        = "#c0e4c7",
  `lighter green`      = "#dff1e3",
  `blue`               = "#0e84cc",
  `light blue`         = "#74c5f6",
  `lighter blue`       = "#b9e2fa",
  `purple`             = "#9f9cce",
  `light purple`       = "#cecce6",
  `lighter purple`     = "#e5e5f2",
  `grey (EAPI)`        = "#878b8c",
  `dark brown (EAPI)`  = "#962915",
  `light brown (EAPI)` = "#af7061",
  `yellow (EAPI)`      = "#b88d4f",
  `dark green (EAPI)`  = "#1a5e5d",
  `light green (EAPI)` = "#809376"
)


eapi_cols <- function(...) {
  cols <- c(...)

  if (is.null(cols))
    return (eapi_colors)

  eapi_colors[cols]
}


eapi_palettes <- list(
  `ord`  = eapi_cols("dark green", "blue", "red"),

  `dico`  = eapi_cols("green", "red"),

  `eapi`  = eapi_cols(
    "grey (EAPI)", "dark brown (EAPI)", "light brown (EAPI)",
    "yellow (EAPI)", "dark green (EAPI)", "light green (EAPI)"),

  `mixed` = eapi_cols("red", "dark green", "blue", "purple"),

  `ali`   = eapi_cols("red", "light red"),
  
  `div`   = eapi_cols('orange', 'light orange', 'lighter orange'),
  
  `seg`   = eapi_cols('dark green'),

  `cipp`  = eapi_cols('green', "light green", "lighter green"),

  `infr`  = eapi_cols("blue", "light blue", 'lighter blue'),

  `eg`= eapi_cols("purple", "light purple", "lighter purple")


)


eapi_pal <- function(palette = "eapi", reverse = FALSE, ...) {
  pal <- eapi_palettes[[palette]]

  if (reverse) pal <- rev(pal)

  colorRampPalette(pal, ...)
}


scale_color_eapi <- function(palette = "eapi", discrete = TRUE, reverse = FALSE, ...) {
  pal <- eapi_pal(palette = palette, reverse = reverse)

  if (discrete) {
    discrete_scale("colour", paste0("eapi_", palette), palette = pal, ...)
  } else {
    scale_color_gradientn(colours = pal(256), ...)
  }
}

scale_fill_eapi <- function(palette = "main", discrete = TRUE, reverse = FALSE, ...) {
  pal <- eapi_pal(palette = palette, reverse = reverse)

  if (discrete) {
    discrete_scale("fill", paste0("eapi_", palette), palette = pal, ...)
  } else {
    scale_fill_gradientn(colours = pal(256), ...)
  }
}

Paleta

Esta paleta usa as cores da EAPI. Seguem os exemplos

eapi_palettes
## $ord
## dark green       blue        red 
##  "#316b3c"  "#0e84cc"  "#eb7071" 
## 
## $dico
##     green       red 
## "#85ca92" "#eb7071" 
## 
## $eapi
##        grey (EAPI)  dark brown (EAPI) light brown (EAPI)      yellow (EAPI) 
##          "#878b8c"          "#962915"          "#af7061"          "#b88d4f" 
##  dark green (EAPI) light green (EAPI) 
##          "#1a5e5d"          "#809376" 
## 
## $mixed
##        red dark green       blue     purple 
##  "#eb7071"  "#316b3c"  "#0e84cc"  "#9f9cce" 
## 
## $ali
##       red light red 
## "#eb7071" "#f6b7b8" 
## 
## $div
##         orange   light orange lighter orange 
##      "#faaf61"      "#fcd5ae"      "#fdead6" 
## 
## $seg
## dark green 
##  "#316b3c" 
## 
## $cipp
##         green   light green lighter green 
##     "#85ca92"     "#c0e4c7"     "#dff1e3" 
## 
## $infr
##         blue   light blue lighter blue 
##    "#0e84cc"    "#74c5f6"    "#b9e2fa" 
## 
## $eg
##         purple   light purple lighter purple 
##      "#9f9cce"      "#cecce6"      "#e5e5f2"

Uso

Para uso, basta escolher a paleta de cores que mais te agrada com a função scale_fill_eapi ou scale_color_eapi. Seguem alguns exemplos:

Itens dicotômicos

# Cria o banco
dicotomico <- data.frame(
  desc = c('Sim', 'Não', 'Sim', 'Não'),
  value = c(70, 30, 40, 60),
  questao = c(rep('Questão 1', 2), rep('Questão 2', 2))
)

# Gera o gráfico
ggplot(dicotomico, aes(x = questao, y = value, fill = desc)) +
  geom_bar(position = 'stack', stat = 'identity')+
  labs(
    x = 'Questões',
    y = 'Quantidade',
    fill = 'Resposta',
    title = 'Dicotômico'
  ) +
  scale_fill_eapi('dico', reverse = T)+ # use essa função
  coord_flip()

Itens ordinais

# Cria o banco
ordinal <- data.frame(
  desc = rep(c(
    'Concordo Plenamente',
    'Concordo',
    'Neutro',
    'Discordo',
    'Discordo Plenamente'
  ),2),
  value = c(15, 25, 20, 30, 10, 10, 30, 20, 25, 15),
  questao = c(rep('Questão 1', 5), rep('Questão 2', 5))
)

# Classifica por fator
ordinal$desc <- factor(ordinal$desc, levels = c(
  'Concordo Plenamente',
  'Concordo',
  'Neutro',
  'Discordo',
  'Discordo Plenamente'
))

# Gera o gráfico
ggplot(ordinal, aes(x = questao, y = value, fill = desc)) +
  geom_bar(position = 'stack', stat = 'identity')+
  labs(
    x = 'Questões',
    y = 'Quantidade',
    fill = 'Resposta',
    title = 'Ordinal'
  ) +
  scale_fill_eapi('ord')+
  coord_flip()

Itens ordinais com coloração dicotômica

# Gera o gráfico
ggplot(ordinal, aes(x = questao, y = value, fill = desc)) +
  geom_bar(position = 'stack', stat = 'identity')+
  labs(
    x = 'Questões',
    y = 'Quantidade',
    fill = 'Resposta',
    title = 'Ordinal'
  ) +
  scale_fill_eapi('dico')+
  coord_flip()

usando as cores das dimensões

Alimentação

ggplot(iris, aes(Sepal.Width, Sepal.Length, color = Species)) +
  geom_point(size = 4) +
  labs(title = 'Alimentacao') +
  scale_color_eapi('ali')

Diversidade

ggplot(iris, aes(Sepal.Width, Sepal.Length, color = Species)) +
  geom_point(size = 4) +
  labs(title = 'Diversidade') +
  scale_color_eapi('div')

Segurança

ggplot(iris, aes(Sepal.Width, Sepal.Length, color = Species)) +
  geom_point(size = 4) +
  labs(title = 'Segurança') +
  scale_color_eapi('seg')

Currículos, interações e práticas pedagógicas

ggplot(iris, aes(Sepal.Width, Sepal.Length, color = Species)) +
  geom_point(size = 4) +
  labs(title = 'Currículos, interações e práticas pedagógicas') +
  scale_color_eapi('cipp')

Infraestrutura

ggplot(iris, aes(Sepal.Width, Sepal.Length, color = Species)) +
  geom_point(size = 4) +
  labs(title = 'Infraestrutura') +
  scale_color_eapi('infr')

Equipe e gestão

ggplot(iris, aes(Sepal.Width, Sepal.Length, color = Species)) +
  geom_point(size = 4) +
  labs(title = 'Equipe e gestão') +
  scale_color_eapi('eg')

Misturando as cores

# gera o gráfico
ggplot(iris, aes(Sepal.Width, Sepal.Length, color = Species)) +
  geom_point(size = 4) +
  scale_color_eapi('mixed')