Pirâmide Etária
Caio VAOS
2024
library(tidyr)
library(dplyr)
library(ggplot2)
library(ggpol)
library(gganimate)
# Carregando
pop_2000_2010 <- readxl::read_xlsx("DF`s/tabela1552-piramide.xlsx",
skip = 6,
col_names = c("code_state", "local", "idade", "sexo", "pop_2000", "pop_2010"),
n_max = 3192)|>
fill(code_state, local, idade) |>
mutate(idade = factor(idade, levels = unique(idade)))
pop_2022 <- readxl::read_xlsx("DF`s/tabela9514.xlsx",
skip = 5,
col_names = c("code_state", "local", "idade", "sexo", "pop_2022"),
n_max = 1848)|>
fill(code_state, local, idade)
# Agrupando 80-48, 85-89, 90-94, 95-99
pop_2000_2010 <- pop_2000_2010 |>
mutate(idade = case_when(
idade == "80 anos" ~ "80 a 84 anos",
idade == "81 anos" ~ "80 a 84 anos",
idade == "82 anos" ~ "80 a 84 anos",
idade == "83 anos" ~ "80 a 84 anos",
idade == "84 anos" ~ "80 a 84 anos",
idade == "85 anos" ~ "85 a 89 anos",
idade == "86 anos" ~ "85 a 89 anos",
idade == "87 anos" ~ "85 a 89 anos",
idade == "88 anos" ~ "85 a 89 anos",
idade == "89 anos" ~ "85 a 89 anos",
idade == "90 anos" ~ "90 a 94 anos",
idade == "91 anos" ~ "90 a 94 anos",
idade == "92 anos" ~ "90 a 94 anos",
idade == "93 anos" ~ "90 a 94 anos",
idade == "94 anos" ~ "90 a 94 anos",
idade == "95 anos" ~ "95 a 99 anos",
idade == "96 anos" ~ "95 a 99 anos",
idade == "97 anos" ~ "95 a 99 anos",
idade == "98 anos" ~ "95 a 99 anos",
idade == "99 anos" ~ "95 a 99 anos",
TRUE ~ idade )) |>
group_by(code_state, local, idade, sexo) |>
summarise(pop_2000 = sum(pop_2000),
pop_2010 = sum(pop_2010), .groups = "drop") |>
mutate(local = factor(local, levels = unique(pop_2022$local)),
idade = factor(idade, levels = unique(pop_2022$idade)),
sexo = factor(sexo, levels = c("Total", "Homem", "Mulher"))) |>
arrange(local,idade, sexo)
# Juntando/Organizando
DF_PIRAMIDE_ETARIA_1 <- cbind(pop_2000_2010,pop_2022[,"pop_2022"]) |>
filter(local == "Brasil",
idade != "Total",
sexo != "Total")
idade_rotulada <- c("0-4","5-9","10-14","15-19","20-24","25-29","30-34","35-39","40-44","45-49","50-54",
"55-59","60-64","65-69","70-74","75-79","80-84","85-89","90-94","95-99","100+")
DF_PIRAMIDE_ETARIA_1$idade_rotulada <- rep(c(rep(idade_rotulada, each=2)), length.out= nrow(DF_PIRAMIDE_ETARIA_1)) |>
factor(levels = idade_rotulada)
DF_PIRAMIDE_ETARIA_2 <- DF_PIRAMIDE_ETARIA_1 |>
pivot_longer(cols = 5:7,
names_to = "ano",
values_to = "pop") |>
mutate(ano = case_when(
ano == "pop_2000" ~ 2000,
ano == "pop_2010" ~ 2010,
ano == "pop_2022" ~ 2022))
## # A tibble: 6 × 8
## code_state local idade sexo pop_2000 pop_2010 pop_2022 idade_rotulada
## <chr> <fct> <fct> <fct> <dbl> <dbl> <dbl> <fct>
## 1 1 Brasil 0 a 4 anos Homem 8326926 7016987 6461689 0-4
## 2 1 Brasil 0 a 4 anos Mulh… 8048802 6779171 6243171 0-4
## 3 1 Brasil 5 a 9 anos Homem 8402353 7624144 7011282 5-9
## 4 1 Brasil 5 a 9 anos Mulh… 8139974 7345231 6738158 5-9
## 5 1 Brasil 10 a 14 anos Homem 8777639 8725413 6992746 10-14
## 6 1 Brasil 10 a 14 anos Mulh… 8570428 8441348 6682215 10-14
## # A tibble: 6 × 7
## code_state local idade sexo idade_rotulada ano pop
## <chr> <fct> <fct> <fct> <fct> <dbl> <dbl>
## 1 1 Brasil 0 a 4 anos Homem 0-4 2000 8326926
## 2 1 Brasil 0 a 4 anos Homem 0-4 2010 7016987
## 3 1 Brasil 0 a 4 anos Homem 0-4 2022 6461689
## 4 1 Brasil 0 a 4 anos Mulher 0-4 2000 8048802
## 5 1 Brasil 0 a 4 anos Mulher 0-4 2010 6779171
## 6 1 Brasil 0 a 4 anos Mulher 0-4 2022 6243171
ggplot(DF_PIRAMIDE_ETARIA_1)+
geom_col(aes(x= ifelse(sexo == "Homem", -pop_2000, pop_2000), y= idade_rotulada, fill=sexo), width = 0.7)+
geom_text(aes(x= ifelse(sexo == "Homem", -pop_2000, pop_2000)*1.08, y= idade_rotulada, label=pop_2000),
size = 2, col = "gray40")+
ggpol::facet_share(~sexo, scales = "free_x")+
scale_fill_manual(values = c("Homem" = "#A2D2FF", "Mulher" = "#FFAFCC"))+
scale_x_continuous(breaks = c(-8000000, -6000000, -4000000, -2000000, 0,
2000000, 4000000, 6000000, 8000000),
labels = c(8, 6, 4, 2, 0, 2, 4, 6, 8))+
labs(title ="Pirâmide Etária Brasil 2000",
x = "População (milhões)", y = "",
fill= "", caption = "Fonte: IBGE - Censo 2000")+
theme_classic()+
theme(plot.title = element_text(hjust = 0.5),
strip.background = element_blank(),
strip.text = element_text(face = 'bold'),
legend.position = 'none',
plot.caption = element_text(hjust = 0, size = 7),
axis.line.x = element_blank(),
axis.ticks.x = element_blank(),
panel.grid.major.x = element_line("gray70"))
ggplot(DF_PIRAMIDE_ETARIA_1)+
geom_col(aes(x= ifelse(sexo == "Homem", -pop_2010, pop_2010), y= idade_rotulada, fill=sexo), width = 0.7)+
geom_text(aes(x= ifelse(sexo == "Homem", -pop_2010, pop_2010)*1.08, y= idade_rotulada, label=pop_2010),
size = 2, col = "gray40")+
ggpol::facet_share(~sexo, scales = "free_x")+
scale_fill_manual(values = c("Homem" = "#A2D2FF", "Mulher" = "#FFAFCC"))+
scale_x_continuous(breaks = c(-8000000, -6000000, -4000000, -2000000, 0,
2000000, 4000000, 6000000, 8000000),
labels = c(8, 6, 4, 2, 0, 2, 4, 6, 8))+
labs(title ="Pirâmide Etária Brasil 2010",
x = "População (milhões)", y = "",
fill= "", caption = "Fonte: IBGE - Censo 2010")+
theme_classic()+
theme(plot.title = element_text(hjust = 0.5),
strip.background = element_blank(),
strip.text = element_text(face = 'bold'),
legend.position = 'none',
plot.caption = element_text(hjust = 0, size = 7),
axis.line.x = element_blank(),
axis.ticks.x = element_blank(),
panel.grid.major.x = element_line("gray70"))
ggplot(DF_PIRAMIDE_ETARIA_1)+
geom_col(aes(x= ifelse(sexo == "Homem", -pop_2022, pop_2022), y= idade_rotulada, fill=sexo), width = 0.7)+
geom_text(aes(x= ifelse(sexo == "Homem", -pop_2022, pop_2022)*1.08, y= idade_rotulada, label=pop_2022),
size = 2, col = "gray40")+
ggpol::facet_share(~sexo, scales = "free_x")+
scale_fill_manual(values = c("Homem" = "#A2D2FF", "Mulher" = "#FFAFCC"))+
scale_x_continuous(breaks = c(-8000000, -6000000, -4000000, -2000000, 0,
2000000, 4000000, 6000000, 8000000),
labels = c(8, 6, 4, 2, 0, 2, 4, 6, 8))+
labs(title ="Pirâmide Etária Brasil 2022",
x = "População (milhões)", y = "",
fill= "", caption = "Fonte: IBGE - Censo 2022")+
theme_classic()+
theme(plot.title = element_text(hjust = 0.5),
strip.background = element_blank(),
strip.text = element_text(face = 'bold'),
legend.position = 'none',
plot.caption = element_text(hjust = 0, size = 7),
axis.line.x = element_blank(),
axis.ticks.x = element_blank(),
panel.grid.major.x = element_line("gray70"))
piramide_animada <- ggplot(DF_PIRAMIDE_ETARIA_2)+
geom_col(aes(x= ifelse(sexo == "Homem", -pop, pop), y= idade_rotulada, fill=sexo), width = 0.7)+
ggpol::facet_share(~sexo, scales = "free_x")+
scale_fill_manual(values = c("Homem" = "#A2D2FF", "Mulher" = "#FFAFCC"))+
scale_x_continuous(breaks = c(-8000000, -6000000, -4000000, -2000000, 0,
2000000, 4000000, 6000000, 8000000),
labels = c(8, 6, 4, 2, 0, 2, 4, 6, 8))+
labs(title ="Pirâmide Etária Brasil {closest_state}",
x = "População (milhões)", y = "",
fill= "", caption = "Fonte: IBGE - Censo 2000, 2010 e 2022")+
theme_classic()+
theme(plot.title = element_text(hjust = 0.5),
strip.background = element_blank(),
strip.text = element_text(face = 'bold'),
legend.position = 'none',
plot.caption = element_text(hjust = 0, size = 7),
axis.line.x = element_blank(),
axis.ticks.x = element_blank(),
panel.grid.major.x = element_line("gray70"))+
transition_states(ano, transition_length = 1, state_length = 1.5)
# Salvar
#anim_save("Plots/piramide_animada.gif", piramide_animada)
# Rodar
piramide_animada