---
title: "Gráfico Atividade Econômica e Desemprego"
date: "2026-03-12"
output: 
 html_document:
  toc: true
  theme: lumen
  highlight: tango
  code_folding: show
  code_download: true
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, message = FALSE, warning = FALSE)

library(dplyr)
library(ggplot2)
library(highcharter)
library(plotly)
library(sidrar)
library(ipeadatar)
library(quantmod)
library(scales)
library(lubridate)
library(rbcb)
library(readxl)
library(writexl)
library(httr)
library(tidyr)
```

```{r}
library(tidyverse)
library(highcharter)
library(lubridate)

# Coletar dados
# IBC-Br (atividade econômica) - código 24363
dados_ibc <- get_series(24363, start_date = "2020-01-01", end_date = Sys.Date()) %>% 
  rename(IBC = `24363`)

# Taxa de desocupação - PNADC - código 24369
dados_desemprego <- get_series(24369, start_date = "2020-01-01", end_date = Sys.Date()) %>% 
  rename(Desemprego = `24369`)

# Combinar dados
dados_combinados <- dados_ibc %>%
  left_join(dados_desemprego, by = "date") %>%
  mutate(
    ano = year(date),
    mes = month(date, label = TRUE, abbr = FALSE),
    timestamp = datetime_to_timestamp(date)
  ) %>%
  select(date, ano, mes, timestamp, IBC, Desemprego) %>%
  arrange(date)

# Verificar dados
if(nrow(dados_combinados) == 0) {
  stop("Dados não encontrados. Verifique os códigos.")
}

# Calcular limites para eixos
ibc_min <- min(dados_combinados$IBC, na.rm = TRUE)
ibc_max <- max(dados_combinados$IBC, na.rm = TRUE)
desemprego_min <- min(dados_combinados$Desemprego, na.rm = TRUE)
desemprego_max <- max(dados_combinados$Desemprego, na.rm = TRUE)

# Margem de 5%
ibc_range <- ibc_max - ibc_min
desemprego_range <- desemprego_max - desemprego_min

# Criar gráfico
highchart(type = "stock") %>%
  # Série 1: IBC-Br (linha) - eixo esquerdo
  hc_add_series(
    data = list_parse2(dados_combinados %>% select(timestamp, IBC)),
    type = "line",
    name = "IBC-Br (atividade econômica)",
    color = "#02023c",  # Azul
    lineWidth = 2,
    marker = list(enabled = FALSE),
    yAxis = 0,
    tooltip = list(valueDecimals = 1)
  ) %>%
  # Série 2: Taxa de desemprego (linha) - eixo direito
  hc_add_series(
    data = list_parse2(dados_combinados %>% select(timestamp, Desemprego)),
    type = "line",
    name = "Taxa de Desemprego (%)",
    color = "#feb712",
    lineWidth = 2,
    marker = list(enabled = TRUE, radius = 2),
    yAxis = 1,
    tooltip = list(valueDecimals = 1, valueSuffix = "%")
  ) %>%
  # Configurar eixos Y duais (eixo do desemprego invertido)
  hc_yAxis_multiples(
    list(
      title = list(text = "IBC-Br (índice)"),
      opposite = FALSE,
      labels = list(format = "{value}"),
      min = floor(ibc_min - 0.05 * ibc_range),
      max = ceiling(ibc_max + 0.05 * ibc_range)
    ),
    list(
      title = list(text = "Taxa de Desemprego (%)"),
      opposite = TRUE,
      labels = list(format = "{value}%"),
      min = floor(desemprego_min - 0.05 * desemprego_range),
      max = ceiling(desemprego_max + 0.05 * desemprego_range),
      reversed = TRUE  # INVERTE O EIXO: desemprego caindo = linha subindo
    )
  ) %>%
  hc_xAxis(
    type = 'datetime',
    labels = list(format = '{value:%b %Y}')
  ) %>%
  hc_title(text = "Atividade Econômica vs. Mercado de Trabalho") %>%
  hc_subtitle(text = "IBC-Br (índice) e Taxa de Desemprego (%) - Dados mensais") %>%
  hc_credits(
    enabled = TRUE,
    text = "Fonte: Banco Central do Brasil (cód. 24363) e IBGE/PNADC (cód. 24369)"
  ) %>%
  hc_rangeSelector(
    enabled = TRUE,
    buttons = list(
      list(type = 'year', count = 1, text = '1Y'),
      list(type = 'year', count = 2, text = '2Y'),
      list(type = 'year', count = 3, text = '3Y'),
      list(type = 'all', text = 'Todo período')
    ),
    selected = 2
  ) %>%
  hc_tooltip(
    shared = TRUE,
    headerFormat = '<span style="font-size: 12px"><b>{point.key}</b></span><br/>',
    pointFormat = '<span style="color:{series.color}">●</span> {series.name}: <b>{point.y:.1f}{series.tooltipOptions.valueSuffix}</b><br/>'
  ) %>%
  hc_legend(
    enabled = TRUE,
    align = "center",
    verticalAlign = "bottom",
    layout = "horizontal"
  ) %>%
  hc_plotOptions(
    line = list(
      animation = TRUE,
      connectNulls = TRUE
    )
  )
```


