Code
Rows: 1
Columns: 2
$ year <dbl> 2019
$ geometry <MULTIPOLYGON [°]> MULTIPOLYGON (((-49.70495 -...
Análise de Dados Financeiros e Econômicos com o R
EA-UFRGS
01/10/2026
a representação de dados em mapas é uma das técnicas de visualização de dados mais utilizadas pela mídia jornalística;
a abordagem de camadas é intuitiva (uma camada para a representação visual da área geográfica, e outra para os pontos e preenchimentos)
R oferece um ecossistema de pacotes baseados no ggplot2 que facilitam a construção de mapas
Localização de consulados e embaixadas americanas no Brasil
arquivos de dados geográficos contendo o território nacional são disponibilizados no site do IBGE.
O pacote geobr (Pereira and Goncalves 2023) (IPEA) é uma API para acesso aos dados do IBGE.
O formato SF foi criado pela Open Geospatial Consortium e é eficiente para a representação de mapas geográficos.
No R, um mapa SF é um tibble com uma coluna especial de geometria, que guarda os polígonos (áreas) ou pontos junto com os metadados.
O ggplot2 desenha esses objetos com a camada geom_sf().
geobr (1)geobr (2)Mapa do Brasil
geobr – cidades e capitaisdf_cities <- vdr::data_import(
"Chapter07-latlong-cities-brazil.csv"
)
p1 <- p0 +
geom_point(data = df_cities,
mapping = aes(y = latitude, x = longitude),
size = 0.05,
color = "blue",
alpha = 0.35) +
geom_point(data = df_cities |> filter(capital == TRUE),
mapping = aes(y = latitude, x = longitude),
size = 1.5,
color = 'red') +
labs(title = "Cidades do Brasil",
subtitle = "Capitais dos estados em vermelho",
caption = "Dados do IBGE (2019)")
p1Mapa de cidades e capitais do Brasil
geobr – Rendimento mensal domiciliardf_ibge <- vdr::data_import(
"Chapter07-data-ibge.csv"
)
data_year <- 2010
states <- geobr::read_state(code_state = "all",
year = data_year,
showProgress = FALSE) |>
left_join(df_ibge, by = c("code_state" = "codigo"))
p <- ggplot(data = states,
aes(fill = rendimento_mensal_domiciliar)) +
geom_sf() +
theme_light() +
labs(fill = "Rend. Mensal",
title = "Renda Mensal Domiciliar por Estado",
caption = "Dados do IBGE (2010)") +
colorspace::scale_fill_binned_diverging(
"Blue-Red",
mid = median(states$rendimento_mensal_domiciliar))
pAPI online para a importação de mapas do Google Maps e Stamen Maps.
Disponibiliza mapas atualizados do mundo inteiro!
Registre-se no Google através de um email. Caso já tenha uma conta, pule esse passo e faça o login no browser de preferência.
Acesse o site https://console.cloud.google.com/ e clique em “New Project”, definindo o nome do projeto e a localização.
Ative o serviço de “Google Maps” para o projeto criado anteriormente.
Recolha a chave na seção “Credentials”
Após o registro da chave, teste a chamada ao API com um comando simples:
ggmapExemplo de mapa para o estado de Santa Catarina
Com a latitude e longitude do local em mãos, fica fácil de mostrar no mapa o ponto de interesse:
poa <- ggmap::get_map("Escola de Administração UFRGS",
zoom = 15)
p_ea <- ggmap::ggmap(poa) +
labs(
title = "Cidade de Porto Alegre",
subtitle = "Localização Escola de Adm., UFRGS",
caption = "Dados do Google Maps") +
geom_point(data = ea_ufrgs,
aes(x = lon,
y = lat),
size = 5,
color = "red") +
geom_text(data = ea_ufrgs,
aes(x = lon,
y = lat,
label = "EA-UFRGS"),
nudge_y = 0.00075,
color = "blue")
p_eaggplot2ggplot2A plataforma R fornece um ambiente computacional completo para automatizar qualquer tarefa de visualização de dados.
Aqui aprenderemos:
A saída de ggplot2::ggplot() é um objeto do R como qualquer outro
Podemos manipular esse objeto facilmente!
Imagine o seguinte problema:
criar função com parâmetros de interesse
aplicar função a anos diferentes
plot_year <- function(this_year, df_yf) {
df_year <- df_yf |>
filter(
lubridate::year(ref_date) == this_year
)
p <- ggplot(df_year,
aes(x = ref_date,
y = price_adjusted)) +
geom_line() +
labs(x = "Ano",
y = "SP500",
title = paste0("SP500 no ano de ", this_year),
caption = "Dados do Yahoo Finance"
) +
theme_light()
return(p)
}Para testar a função, vamos importar os dados do SP500 e criar o gráfico para o ano de 2020:
SP500 para o ano 2020
Aplicando a um vetor de anos:
O primeiro elemento de l_p é o gráfico para o ano de 2000:
purrr (vs. for)purrr::map() aplica uma função a cada elemento de um vetor e devolve uma lista com os resultados.
É equivalente a um laço for, porém mais conciso e sem a necessidade de “pré-alocar” a lista:
Agora que temos 1) a função que cria o gráfico por ano e 2) um conjunto de anos, podemos melhorar o código adicionando o processo de exportação das figuras.
Aplicando a função:
[1] "SP500_2015.png" "SP500_2016.png" "SP500_2017.png" "SP500_2018.png"
[5] "SP500_2019.png" "SP500_2020.png" "SP500_2021.png" "SP500_2022.png"
Figuras com o índice SP500 por ano
Como sabemos, módulo ggplot2 (Wickham et al. 2026) e ggthemes (Arnold 2026) oferecem diversos temas incluindo:
Primeiro criamos a função com tema:
E agora testamos para o mesmo gráfico de preços e a função de tema theme_economist() :
Agora, vamos criar uma nova função que irá exportar o resultado em arquivos no formato png.
Note que passamos a própria função de tema (e não o seu nome como string): assim evitamos eval(parse()) e deixamos o código mais seguro e idiomático.
plot_with_theme_and_export <- function(this_theme_fct,
theme_label,
p,
path_to_save) {
p <- plot_with_theme(this_theme_fct, p)
fs::dir_create(path_to_save)
p <- p +
labs(subtitle = paste0("Tema = ", theme_label))
file_to_save <- fs::path(
path_to_save,
paste0("SP500-1950-2022_",
stringr::str_replace_all(theme_label,
'::', '_' ),
".png")
)
ggsave(file_to_save, p,
width = 10, height = 6, dpi = 300)
return(p)
}Aplicação da função:
themes <- list(
"ggplot2::theme_light" = ggplot2::theme_light,
"ggplot2::theme_grey" = ggplot2::theme_grey,
"ggthemes::theme_excel" = ggthemes::theme_excel,
"ggthemes::theme_economist" = ggthemes::theme_economist
)
dir_out <- fs::path_temp("testing-themes")
l_p <- purrr::imap(
.x = themes,
.f = function(fct, nm) plot_with_theme_and_export(
this_theme_fct = fct,
theme_label = nm,
p = p,
path_to_save = dir_out
)
)
basename(fs::dir_ls(dir_out))[1] "SP500-1950-2022_ggplot2_theme_grey.png"
[2] "SP500-1950-2022_ggplot2_theme_light.png"
[3] "SP500-1950-2022_ggthemes_theme_economist.png"
[4] "SP500-1950-2022_ggthemes_theme_excel.png"
Figuras com o índice SP500 por tema de gráfico
geobr (dados oficiais do IBGE) e ggmap (mapas do Google).geom_sf().ggplot2 são objetos: podem ser guardadas em listas e manipuladas.purrr::map() e purrr::imap() aplicam funções a vários elementos e automatizam a produção de figuras.ADFER - UFRGS