library(tidyverse)
library(here)
theme_set(theme_bw())
# SEMPRE read_csv NUNCA read.csv
clima_tudo = read_csv(
here("data/tempo-jp-cg-pt.csv"),
col_types = cols(
.default = col_double(),
cidade = col_character(),
semana = col_date(format = ""),
ano = col_integer(),
mes = col_integer()
)
)
clima = clima_tudo %>%
filter(ano == 2019)
As cidades da Paraíba são diversas e, do litoral ao sertão, muito da nossa cultura se criou e ainda existe devido ao clima e às chuvas. É possível entender melhor a diferença entre esses fenômenos nas diferentes regiões da Paraíba utilizando os dados do INMET. No decorrer desta análise, estaremos observando a temperatura, o vento, a umidade e a quantidade de chuva nas cidades de João Pessoa, capital da Paraíba situada no litoral, Campina Grande, situada no brejo paraibano, e Patos, situada no sertão.
Nessa análise, estarei respondendo as perguntas 4, 3 e 2, respectivamente, do Readme.
Inicialmente, precisamos entender os dados que estamos trabalhando, quais atributos estão disponíveis, para então elaborar e responder perguntas com base neles. Vejamos um segmento dos dados:
clima %>% slice(1:8)
## # A tibble: 8 x 11
## cidade semana temp_max temp_media temp_min vento_medio vento_max umidade
## <chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Campina~ 2019-01-06 32.1 25.6 19.6 3.57 4.6 74.9
## 2 Campina~ 2019-01-13 33.5 27.1 20 3.29 4.5 69
## 3 Campina~ 2019-01-20 33.3 26.7 19.6 4.01 6.5 72.5
## 4 Campina~ 2019-01-27 32.4 26.4 19.6 3.53 5 75.0
## 5 Campina~ 2019-02-03 32.2 25.3 19.5 2.95 4.8 83
## 6 Campina~ 2019-02-10 31.1 25.6 20.1 3.17 5 84.1
## 7 Campina~ 2019-02-17 31.6 25.9 20.5 2.89 4.1 79.2
## 8 Campina~ 2019-02-24 31.1 25.9 20.5 3.63 4.8 76.8
## # ... with 3 more variables: chuva <dbl>, ano <int>, mes <int>
É interessante ver que temos os valores de temperatura máxima, média e mínima, o vento médio e máximo. A Umidade e a chuva são valores absolutos. Além disso, também temos acesso ao registro de quando essa medição foi feita, em que semana, o que pode ajudar a visualizar essa informação.
Agora sabemos que é possível visualizar a temperatura semana a semana, comparar entre as diferentes cidades, e tentar entender algo a partir disso. Vejamos a distribuição da temperatura de cada uma das cidades em 2019:
clima %>%
ggplot(aes(x = cidade, y = temp_media)) +
geom_jitter(height = 0.1, color = "coral") +
labs(x = "Cidade", y = "Temperatura Média") +
ggtitle("Temperatura média por cidade, em 2019")
Pela distribuição acima, entendemos que Campina Grande possui as menores temperaturas médias, enquanto Patos possui as maiores temperaturas médias. Ainda assim, com o gráfico acima não conseguimos ver a distribuição dessas temperaturas ao longo do ano. Vejamos de outra forma:
clima %>%
ggplot(mapping = aes(x = semana, y = temp_media, color = cidade)) +
geom_point() + geom_line() +
labs(x = "Semana de 2019", y = "Temperatura Média", color = "Cidade") +
ggtitle("Temperatura média ao longo de 2019")
Diferente da visualização anterior, agora podemos comparar semana a semana e notar coisas que antes não era possível notar: no período de Fevereiro a Junho, João Pessoa atinge temperaturas médias maiores que as de Patos; Campina Grande sempre está com temperaturas médias inferiores às outras cidades.
clima %>% filter(mes == 6) %>%
ggplot(mapping = aes(x = semana, y = temp_media, color = cidade)) +
geom_point() + geom_line() +
labs(x = "Semanas de Junho de 2019", y = "Temperatura Média", color = "Cidade") +
ggtitle("Temperatura média em Junho de 2019")
Também podemos olhar para um ponto específico do ano: se olharmos para Junho, quando ocorrem as festividades juninas, é também o ponto em que todas as cidades atingiram a menor temperatura média naquele ano, mas Campina Grande foi a mais fria entre as três. Assim, Campina Grande tem o São João mais frio, seguido por João Pessoa, enquanto Patos tem o mais quente.
Outro grande fator, além da temperatura, são as chuvas e a umidade. No tradicional São João de Campina Grande, não é surpresa tomar um banho de chuva no Parque do Povo, ou ter o céu coberto com uma fina e fria névoa. Mas essa época também é assim nas outras cidades?
clima %>% filter(mes == 6) %>%
ggplot(mapping = aes(x = semana, y = umidade, color = cidade, size = chuva)) +
geom_point(alpha = 0.6) +
labs(x = "Semanas de Junho de 2019", y = "Umidade", size = "Chuva (mm)", color = "Cidade") +
ggtitle("Umidade em Junho de 2019")
Embora Campina Grande seja a cidade mais úmida no mês de junho, não foi a que mais choveu, posição esta ocupada por João Pessoa. Patos, diferente das outras duas cidades, possui baixa umidade e chuva ao longo do mês inteiro. Mas essa visão ainda está restrita no mês de Junho. Vejamos como é essa proporção durante o ano inteiro, de uma outra forma:
clima %>%
ggplot(mapping = aes(x = semana, y = umidade, color = cidade, size = chuva)) +
geom_point(alpha = 0.6) +
facet_wrap(~cidade, ncol=1) +
labs(x = "Semanas de 2019", y = "Umidade", size = "Chuva (mm)", color = "Cidade") +
ggtitle("Umidade em 2019")
Enquanto João Pessoa e Campina Grande são úmidas e chove durante o ano todo, Patos tem bem menos umidade, bem mais associada aos momentos de chuva na cidade. Mas, por enquanto, só estamos vendo o ano de 2019, e Patos já foi bem diferente das outras. Como o 2019 de Patos se compara com os outros anos?
patos <- clima_tudo %>%
filter(cidade == "Patos") %>%
filter(ano < 2019) %>%
mutate(mes = as_factor(mes))
patos_2019 <- clima %>%
filter(cidade == "Patos") %>%
mutate(mes = as_factor(mes))
patos %>%
ggplot(mapping = aes(x = mes, y = umidade)) +
geom_boxplot() +
geom_point(patos_2019, mapping = aes(x = mes, y = umidade), color="blue") +
labs(x = "Mês do ano", y = "Umidade") +
ggtitle("Umidade em Patos")
No gráfico acima, os pontos azuis representam as semanas daquele mês em 2019, enquanto os boxplots representam a distribuição de umidade nos anos anteriores. Quando comparamos, há muitos meses que repetem o que aconteceu nos anos anteriores, mas também é possível perceber que de Junho a Dezembro parece menos úmido - mais seco - que nos anos anteriores.
Os primeiros meses do ano sempre dão uma sensação de calor muito grande, e não é difícil ver jornais falando sobre récordes de temperatura. Entretanto, sabemos que a sensação térmica, isto é, a temperatura que sentimos no ambiente, pode ser muito diferente da temperatura em si.Considerando apenas o período de janeiro e fevereiro, como varia o calor das 3 cidades nos últimos anos? Aqui, ao me referir a calor estou imaginando a maior temperatura experienciada pelas pessoas em cada semana. Para responder, vamos primeiro criar uma função que calcula a sensação térmica, gerando um valor mais próximo à experiência das pessoas:
sensacao_termica <- function(temperatura, vento) {
sts <- c()
for (i in 1:length(temperatura)) {
vi = vento[i]
ti = temperatura[i]
sti <- 33 + (10 * sqrt(vi) + 10.45 - vi) * ((ti - 33) / 22)
sts <- c(sts, sti)
}
return(sts)
}
clima <- clima %>% mutate(vento_medio_kmh = 3.6 * vento_medio)
clima$sensacao_termica <- sensacao_termica(clima$temp_media, clima$vento_medio_kmh)
clima %>%
filter(mes < 3) %>%
ggplot() +
geom_point(mapping = aes(x = semana, y = temp_media, color="red")) +
geom_point(mapping = aes(x = semana, y = sensacao_termica, color="blue")) +
facet_wrap(~cidade) +
labs(x = "Semana", y = "Temperatura e Sensação Térmica", color="Medida") +
scale_color_manual(values = c("blue" = "blue", "red" = "red"),
labels = c("Sensação Térmica", "Temperatura Média")) +
ggtitle("Temperaturas e Sensações Térmicas em 2019")
De início, já é perceptível que a sensação térmica é diretamente proporcional a temperatura, mas é sempre uma sensação de estar mais frio do que realmente está. Isso em 2019. Vejamos como isso acontece quando comparado aos anos anteriores:
clima_tudo$sensacao_termica <- sensacao_termica(clima_tudo$temp_media, clima_tudo$vento_medio)
clima_tudo %>% filter(mes < 3 & ano < 2019) %>%
ggplot(mapping = aes(x = semana, y = sensacao_termica, colour="red")) +
geom_point() +
geom_point(clima %>% filter(mes < 3), mapping = aes(x = semana, y = sensacao_termica, colour="blue")) +
facet_wrap(~cidade) +
labs(x = "Ano", y = "Sensação Térmica", color = "Ano") +
scale_color_manual(values = c("blue" = "blue", "red" = "red"),
labels = c("2019", "Outros anos")) +
ggtitle("Sensação Térmica")
## Warning: Removed 1 rows containing missing values (geom_point).
Campina Grande e João Pessoa tiveram as menores sensações térmicas dos últimos anos. Patos, diferente das demais, teve uma sensação térmica semelhante aos anos anteriores.