Skip to content

Instantly share code, notes, and snippets.

@beatrizmilz
Created January 17, 2024 20:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save beatrizmilz/5cf6c2e6234e460428d45ea4b9d1d2dc to your computer and use it in GitHub Desktop.
Save beatrizmilz/5cf6c2e6234e460428d45ea4b9d1d2dc to your computer and use it in GitHub Desktop.
Código para criar um gráfico com R e ggplot2 do número de eventos da R-Ladies São Paulo ao longo do tempo
# Gráfico: Eventos da R-Ladies São Paulo
# Criado por Beatriz Milz
# Instagram: @dadoseambiente
# GitHub: @beatrizmilz
library(tidyverse)
# Criando manualmente uma tabela com os dados
# Na tabela temos a frequencia de eventos online e presenciais, em cada ano.
frequencia_eventos <- tribble(
~ ano, ~ n_eventos_online, ~ n_eventos_presencial,
2018L, 0L, 4L,
2019L, 0L, 11L,
2020L, 5L, 1L,
2021L, 3L, 0L,
2022L, 1L, 1L,
2023L, 2L, 5L
)
# Precisamos deixar a tabela em um formato "longo"!
# Ou seja, ficar só com as colunas "ano", "tipo" e "n"
# sendo que "tipo" é o tipo de evento (online ou presencial)
# e "n" é a frequencia de eventos daquele tipo naquele ano.
frequencia_eventos_long <- frequencia_eventos |>
pivot_longer(cols = -ano,
names_to = "tipo",
values_to = "n") |>
# Melhorando o texto da coluna "tipo"
mutate(tipo = str_replace(tipo, "n_eventos_", "") |>
str_to_title())
# Tabela pequena com os eventos planejados para 2024
eventos_planejados <- tribble( ~ ano, ~ tipo, ~ n,
2024L, "Online", 6L,
2024L, "Presencial", 6L)
# Agora podemos fazer o gráfico!
grafico_rladies <- frequencia_eventos_long |>
# iniciando o ggplot2
ggplot() +
# mapeando as variáveis
aes(x = ano, y = n, fill = tipo) +
# adicionando as camadas
# geom_col por padrão usará os dados da tabela frequencia_eventos_long
geom_col() +
# geom_col com os dados da tabela eventos_planejados
# o alpha = 0.5 é para deixar transparência de 50%
geom_col(data = eventos_planejados, alpha = 0.5) +
# Alterando as cores das barras
scale_fill_manual(values = c("#a7a9ac", "#88398a")) +
# Configurando a escala do eixo x: queremos que "quebre" ano a ano
scale_x_continuous(breaks = seq(2017, 2024, 1)) +
# Configurando a escala do eixo y: queremos que "quebre" de 2 em 2
# para não poluir o gráfico
scale_y_continuous(breaks = seq(0, 12, 2)) +
# Adicionando rótulos e títulos
labs(
x = "Ano",
y = "Quantidade",
fill = "Modalidade",
title = "Eventos da R-Ladies São Paulo",
subtitle = "Estamos planejando 12 eventos em 2024!",
caption = "Gráfico por Beatriz Milz\n Instagram: @dadoseambiente"
) +
# Configurando o tema do gráfico:
# iniciando com o tema minimal e alterando o tamanho da fonte padrão
theme_minimal(base_size = 15) +
# configurando o tema do gráfico
theme(
# deixando a legenda em cima do grafico
legend.position = "top",
# tirando as linhas de grade
panel.grid.minor = element_blank(),
panel.grid.major = element_blank(),
# Essa configuração ajuda a centralizar o título
plot.title.position = "plot",
# Configurando o título do gráfico
plot.title = element_text(
family = "Arial",
color = "#88398a",
hjust = 0.5
),
# Configurando o subtítulo do gráfico
plot.subtitle = element_text(hjust = 0.5, size = 12),
# Configurando os textos do gráfico
text = element_text(family = "Arial", color = "#80868b")
)
# Salvando o gráfico
ggsave(
"grafico_rladies.png",
plot = grafico_rladies,
dpi = 300,
height = 5,
width = 7,
bg = "white"
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment