library(dplyr)
library(ggplot2)
library(plotly)
library(ggmap)
Percebi que nos últimos tempos tenho acessado uma parte interessante da internet: muitos membros da comunidade de analistas e engenheiros de dados não somente produzem muito conteúdo interessante mas também fazem de tudo para registrar e compartilhar a informação sobre suas áreas de atuação. É verdade que desde a graduação tenho consumido muito desses conteúdos como forma de resolver demandas, mas na nova fase da vida, com o fim do mestrado, meu interesse tem mudado um pouco.
Agora, eu sinto que posso dar um passo e participar da comunidade também compartilhando coisas que eu sei. De fato, tenho muito que aprender, principalmente quando me comparo com profissionais tão legais e experientes, mas esse blog também vai ajudar nesse ponto. Expondo minhas ideias e meus trabalhos até aqui posso ir superando dois desafios:
- Me dou a oportunidade da comunidade contribuir com sugestões para melhorar no que me proponho
- Faço um registro do meu caminho nessa carreira de analista para o futuro
Uma das atividades que mais admiro é o Tidytuesday, composto por desafios semanais onde é fornecida uma base e quem participa deve elaborar uma visualização e postar nas redes. Essa semana, os dados fornecidos são sobre as erupções do Monte Vesúvio na década passada. Vamos ver o que consegui fazer.
É possível baixar diretamente os dados pelo pacote do desafio
<- tidytuesdayR::tt_load("2025-05-13") data
---- Compiling #TidyTuesday Information for 2025-05-13 ----
--- There is 1 file available ---
── Downloading files ───────────────────────────────────────────────────────────
1 of 1: "vesuvius.csv"
<- data$vesuvius vesuvius
É possível fazer uma exploração básica com o pacote modelsummary.
::datasummary_skim(vesuvius) modelsummary
Unique | Missing Pct. | Mean | SD | Min | Median | Max | Histogram | |
---|---|---|---|---|---|---|---|---|
event_id | 12027 | 0 | 15494.1 | 11014.2 | 102.0 | 14981.0 | 40802.0 | ![]() |
latitude | 344 | 29 | 40.8 | 0.0 | 40.8 | 40.8 | 40.9 | ![]() |
longitude | 391 | 29 | 14.4 | 0.0 | 14.3 | 14.4 | 14.5 | ![]() |
depth_km | 291 | 29 | 0.4 | 0.5 | 0.0 | 0.2 | 9.3 | ![]() |
duration_magnitude_md | 117 | 3 | 0.2 | 0.6 | -2.0 | 0.1 | 3.1 | ![]() |
md_error | 2 | 3 | 0.3 | 0.0 | 0.3 | 0.3 | 0.3 | ![]() |
year | 14 | 0 | 2018.9 | 3.3 | 2011.0 | 2019.0 | 2024.0 | ![]() |
N | % | |||||||
Mount Vesuvius | 12027 | 100.0 | ||||||
earthquake | 12027 | 100.0 | ||||||
review_level | preliminary | 12025 | 100.0 | |||||
revised | 2 | 0.0 |
A proposta não é necessariamente criar modelos causais ou preditivos, mas escolhi retirar as observações de 2011 e 2012 para melhorar a visualização dos mapas.
|>
vesuvius count(year)
# A tibble: 14 × 2
year n
<dbl> <int>
1 2011 1
2 2012 1
3 2013 594
4 2014 749
5 2015 1018
6 2016 915
7 2017 937
8 2018 1316
9 2019 1231
10 2020 1198
11 2021 1034
12 2022 853
13 2023 865
14 2024 1315
<- vesuvius |>
vesuvius filter(year>2012)
Queria testar uma visualização 3d para verificar a profundidade do epicentro das erupções. O pacote que eu gosto para esse tipo de visualização é o plotly. Infelizmente não tenho muita intimidade com ele, o que fez esse gráfico ser bonito, mas não muito informativo.
<- plot_ly(vesuvius, x = ~latitude, y = ~longitude, z = ~depth_km,
fig marker = list(color = ~year, colorscale = c('#FFE1A1', '#683531'), showscale = TRUE))
<- fig %>% add_markers()
fig <- fig %>% layout(scene = list(xaxis = list(title = 'Latitude'),
fig yaxis = list(title = 'Longitude'),
zaxis = list(title = 'Depth (km)')))
fig
Warning: Ignoring 3433 observations
A versão final e, portanto, a escolhida para representar minha primeira participação no Tidytuesday é o gráfico abaixo, que usei o ggmap para mesclar um mapa real junto com o scatterplot da latitude e longitude, mostrando a variação da profundidade dos impactos por ano.
<- c(left = 14.3, bottom = 40.75, right = 14.5, top = 40.87)
vesuvius_map get_stadiamap(vesuvius_map, zoom = 12, maptype = "stamen_terrain") |>
ggmap()+
geom_point(aes(longitude, latitude, color=depth_km), data=(filter(vesuvius, year>2012)), size = .5, alpha = .5)+
facet_wrap(~year)+
labs(x = "longitude", y = "latitude", title = "Depth of eruptions by Vesuvius")
ℹ © Stadia Maps © Stamen Design © OpenMapTiles © OpenStreetMap contributors.
Warning: Removed 3433 rows containing missing values or values outside the scale range
(`geom_point()`).
Mesmo não levando a conclusões mirabolantes (porque eu estava esperando que em 10 anos a profundidade das erupções mudasse?) gostei de aplicar essas ferramentas que usei durante minha graduação num problema prático. Tudo isso foi relativamente rápido de fazer e espero continuar contribuindo.
Citation
@online{batista2025,
author = {Batista, Victor},
title = {Sobre Dados e Mapas},
date = {2025-05-13},
url = {https://jvbatista1.github.io/posts/20250513_vesuvius/},
langid = {en}
}