Contexto

O contexto desse rmd é uma monitoria de R. Estamos no segundo encontro. Até agora, esperamos que vocês já tenham conseguido fazer um gráfico bem simples usando o mtcars e hoje vamos aprender a usar dados de temperatura usando brclimr.

Pacotes

Durante a monitoria a gente teve tempos difíceis por conta da dificuldade de instalar o loadinstall.

Tempos melhores estão por vir.

É possível instalar o pacote pela via normal, e pelo devtools.

install.packages("loadinstall")
#ou
devtools::install_github("flaviaerius/loadinstall")

Se, mesmo assim, você não conseguir instalar o loadinstall, instale e carregue pacote por pacote. Os pacotes usados:

Para quem conseguiu instalar o loadinstall tranquilamente, basta fazer isso aqui.

library(loadinstall)
packages <- c("gtrendsR", "ggplot2", "ggthemes", "arrow", "brclimr", "tidyverse", "lubridate",  "readr")
lapply(packages, dynamic_require)
## [[1]]
## [1] "gtrendsR"    "loadinstall" "stats"       "graphics"    "grDevices"  
## [6] "utils"       "datasets"    "methods"     "base"       
## 
## [[2]]
##  [1] "ggplot2"     "gtrendsR"    "loadinstall" "stats"       "graphics"   
##  [6] "grDevices"   "utils"       "datasets"    "methods"     "base"       
## 
## [[3]]
##  [1] "ggthemes"    "ggplot2"     "gtrendsR"    "loadinstall" "stats"      
##  [6] "graphics"    "grDevices"   "utils"       "datasets"    "methods"    
## [11] "base"       
## 
## [[4]]
##  [1] "arrow"       "ggthemes"    "ggplot2"     "gtrendsR"    "loadinstall"
##  [6] "stats"       "graphics"    "grDevices"   "utils"       "datasets"   
## [11] "methods"     "base"       
## 
## [[5]]
##  [1] "brclimr"     "arrow"       "ggthemes"    "ggplot2"     "gtrendsR"   
##  [6] "loadinstall" "stats"       "graphics"    "grDevices"   "utils"      
## [11] "datasets"    "methods"     "base"       
## 
## [[6]]
##  [1] "lubridate"   "forcats"     "stringr"     "dplyr"       "purrr"      
##  [6] "readr"       "tidyr"       "tibble"      "tidyverse"   "brclimr"    
## [11] "arrow"       "ggthemes"    "ggplot2"     "gtrendsR"    "loadinstall"
## [16] "stats"       "graphics"    "grDevices"   "utils"       "datasets"   
## [21] "methods"     "base"       
## 
## [[7]]
##  [1] "lubridate"   "forcats"     "stringr"     "dplyr"       "purrr"      
##  [6] "readr"       "tidyr"       "tibble"      "tidyverse"   "brclimr"    
## [11] "arrow"       "ggthemes"    "ggplot2"     "gtrendsR"    "loadinstall"
## [16] "stats"       "graphics"    "grDevices"   "utils"       "datasets"   
## [21] "methods"     "base"       
## 
## [[8]]
##  [1] "lubridate"   "forcats"     "stringr"     "dplyr"       "purrr"      
##  [6] "readr"       "tidyr"       "tibble"      "tidyverse"   "brclimr"    
## [11] "arrow"       "ggthemes"    "ggplot2"     "gtrendsR"    "loadinstall"
## [16] "stats"       "graphics"    "grDevices"   "utils"       "datasets"   
## [21] "methods"     "base"

Dados de temperatura

As pessoas ficam falando que eu estou “acostumado” ao calor só porque sou de Salvador na Bahia. Geralmente falo que lá não faz tanto calor quando faz em Viçosa. Vou mostrar adiante que estou errado, ou certo… tem que ver o que as temperaturas máximas registradas nas duas cidades dizem.

Vamos pegar estes dados usando o brclimr.

Já mostrei onde que estão os códigos dos municípios no site do IBGE.

Vou pegar primeiro os dados de Salvador, só depois a gente mexe com os dados de Viçosa.

Vamos olhar só os dados da temperatura máxima em Salvador, em bases diárias, entre 2015 e 2018.

salvador<-fetch_data(
    code_muni = 2927408,
    product = "brdwgd",
    indicator = "tmax",
    statistics = "mean",
    date_start = as.Date("2015-01-01"),
    date_end = as.Date("2018-12-31")
  )
head(salvador)
## # A tibble: 6 × 2
##   date       value
##   <date>     <dbl>
## 1 2015-01-01  31.5
## 2 2015-01-02  31.2
## 3 2015-01-03  31.2
## 4 2015-01-04  30.7
## 5 2015-01-05  30.3
## 6 2015-01-06  31.7

Alguns gráficos simples

g3 <- ggplot(data = salvador, aes(x = date, y = value)) +
  geom_line() + # Adiciona as linhas
  labs(x = "", y = "Temperatura(max)") + # Adiciona rótulos aos eixos
  ggtitle("Salvador - BA") + # Adiciona título ao gráfico
  theme_minimal() # Define um tema para o gráfico

g3

g4 <- ggplot(data = salvador, aes(x = date, y = value)) +
  geom_point() + # pontos
  labs(x = "", y = "Temperatura(max)") + # Adiciona rótulos aos eixos
  ggtitle("Salvador - BA") + # Adiciona título ao gráfico
  theme_minimal() # Define um tema para o gráfico

g4

Você pode querer, pontos e linhas:

g5 <- ggplot(data = salvador, aes(x = date, y = value)) +
  geom_line() + # Adiciona as linhas
  geom_point()+
  labs(x = "", y = "Temperatura(max)") + # Adiciona rótulos aos eixos
  ggtitle("Salvador - BA") + # Adiciona título ao gráfico
  theme_minimal() # Define um tema para o gráfico

g5

Mas o que eu mais gosto é o que dá alguma idéia de temperatura com cores.

Pra mim, abaixo de 27 de máxima tá tranquilo, entre 27 e 30 tá quente, entre 30 e 33 tá bem quente, acima de 33 tá impossível. Vou procurar umas cores que reflitam isso.

g7 <- ggplot(data = salvador, aes(x = date, y = value, color = value)) +
  geom_point() + # pontos
  labs(x = "", y = "Temperatura (max)") + # Adiciona rótulos aos eixos
  ggtitle("Salvador - BA") + # Adiciona título ao gráfico
  theme_minimal() + # Define um tema para o gráfico
  scale_color_gradient(low = "blue", high = "red") # Adiciona uma escala de cores

print(g7)

Você pode achar que precisa destacar só os valores acima de 33 graus, que é quando as coisas ficam realmente desconfortáveis.

g10 <- ggplot(data = salvador, aes(x = date, y = value, color = value > 33)) +
  geom_point() + # pontos
  labs(x = "", y = "Temperatura (max)") + # Adiciona rótulos aos eixos
  ggtitle("Salvador - BA") + # Adiciona título ao gráfico
  theme_minimal() + # Define um tema para o gráfico
  scale_color_manual(values = c("grey", "red"), guide = FALSE) + # Define cores manualmente
  guides(color = guide_legend(override.aes = list(shape = 19))) # Remove legenda de cores

print(g10)

Veja que o verão de 2018-2019 foi atipicamente desconfortável em Salvador. Muitos dias com temperatura acima dos 33 graus.

Você obviamente pode customizar as legendas.

E Viçosa?

vicosa<-fetch_data(
    code_muni = 3171303,
    product = "brdwgd",
    indicator = "tmax",
    statistics = "mean",
    date_start = as.Date("2015-01-01"),
    date_end = as.Date("2018-12-31")
  )
head(vicosa)
## # A tibble: 6 × 2
##   date       value
##   <date>     <dbl>
## 1 2015-01-01  33.0
## 2 2015-01-02  35.7
## 3 2015-01-03  33.7
## 4 2015-01-04  32.0
## 5 2015-01-05  29.5
## 6 2015-01-06  30.2
g12 <- ggplot(data = vicosa, aes(x = date, y = value, color = value > 33)) +
  geom_point() + # pontos
  labs(x = "", y = "Temperatura (max)") + # Adiciona rótulos aos eixos
  ggtitle("Vicosa - MG") + # Adiciona título ao gráfico
  theme_minimal() + # Define um tema para o gráfico
  scale_color_manual(values = c("grey", "red"), guide = FALSE) + # Define cores manualmente
  guides(color = guide_legend(override.aes = list(shape = 19))) # Remove legenda de cores

print(g12)

Eu achei parecido.
O verão de 2016-2017 mesmo, Viçosa teve mais dias de temperaturas acima dos 33 graus do que Salvador.

Olhe aqui qual a cidade mais quente do Brasil, e ela fica em MG.

Vamos olhar as temperaturas máximas lá e fazer o gráfico destacando os dias acima de 33 graus.

#São Romão
sr<-fetch_data(
    code_muni = 3164209,
    product = "brdwgd",
    indicator = "tmax",
    statistics = "mean",
    date_start = as.Date("2015-01-01"),
    date_end = as.Date("2018-12-31")
  )
head(sr)
## # A tibble: 6 × 2
##   date       value
##   <date>     <dbl>
## 1 2015-01-01  36.0
## 2 2015-01-02  36.5
## 3 2015-01-03  36.5
## 4 2015-01-04  33.7
## 5 2015-01-05  35.1
## 6 2015-01-06  34.4
g22 <- ggplot(data = sr, aes(x = date, y = value, color = value > 33)) +
  geom_point() + # pontos
  labs(x = "", y = "Temperatura (max)") + # Adiciona rótulos aos eixos
  ggtitle("Sao Romao - MG") + # Adiciona título ao gráfico
  theme_minimal() + # Define um tema para o gráfico
  scale_color_manual(values = c("grey", "red"), guide = FALSE) + # Define cores manualmente
  guides(color = guide_legend(override.aes = list(shape = 19))) # Remove legenda de cores

print(g22)

Para casa

Minhas tarefas

Perguntem ao Chat e ao Google!