Este tutorial é uma valiosa contribuição da nossa comunidade e foi editado pela DataCamp para garantir clareza e precisão.
Quer compartilhar sua própria experiência? Vamos adorar ouvir você! Envie seus artigos ou ideias pelo nosso formulário de contribuições da comunidade.
"O aquecimento global não é uma previsão. Está acontecendo" - James Hansen
As mudanças climáticas são um tema urgente que nos afeta a todos, e a visualização de dados pode ser uma ferramenta poderosa para aumentar a conscientização. Neste tutorial passo a passo, você vai aprender a usar ggplot2 no R para criar visualizações impactantes de dados climáticos históricos. Ao final, você saberá como encontrar conjuntos de dados curados, plotar dados históricos de clima e personalizar seus gráficos para contar uma história envolvente.
As mudanças climáticas são um tema urgente que nos afeta a todos, e a visualização de dados pode ser uma ferramenta poderosa para aumentar a conscientização. Neste tutorial passo a passo, você vai aprender a usar ggplot2 no R para criar visualizações impactantes de dados climáticos históricos. Ao final, você saberá como encontrar conjuntos de dados curados, plotar dados históricos de clima e personalizar seus gráficos para contar uma história envolvente.
Neste tutorial, você vai aprender onde encontrar dados históricos de temperatura confiáveis e curados e como visualizá-los com ggplot2.
- Saber onde encontrar conjuntos de dados curados com dados históricos de clima;
- Sentir-se à vontade para plotar dados históricos de clima com ggplot2;
- Ser capaz de personalizar seus gráficos no ggplot2 para contar melhor sua história.
Passo 1: encontrando e carregando os dados
Os dados para este tutorial estão disponíveis no National Centers for Environmental Information (NCEI). O NCEI é a principal autoridade em dados ambientais nos EUA e oferece dados de alta qualidade sobre clima, ecossistemas e recursos hídricos. O conjunto de dados Global Summary of the Year (GSOY) traz dados históricos de clima por cidade e estação. Para este tutorial, vamos usar dados de Berkeley, CA. Se preferir, você pode escolher outra cidade.
Os dados serão carregados com read_csv. O primeiro argumento é o caminho do arquivo e o segundo, col_select, informa ao R quais colunas você quer carregar. Note que este dataset contém várias variáveis, mas estamos interessados apenas em "DATE" e "TAVG". "DATE" traz o ano da observação da temperatura e "TAVG" é a temperatura média anual em graus Celsius. Para saber mais sobre as variáveis disponíveis, consulte o codebook do dataset.
library(readr)23df <- read_csv('USC00040693.csv',4 col_select = c("DATE", "TAVG"))5Rows: 118 Columns: 2── Column specification ────────────────────────────────────────────────────────Delimiter: ","dbl (2): DATE, TAVGA seguir, você vai imprimir o dataset e suas estatísticas descritivas para ter uma visão inicial dos dados. A função summary() do R informa que os dados vão de 1893 a 2019 e que a menor temperatura média anual observada em Berkeley, CA, nesse período foi 12,9 ºC. A maior média foi 15,93 ºC.

summary(df) DATE TAVG Min. :1893 Min. :12.90 1st Qu.:1926 1st Qu.:13.50 Median :1956 Median :13.91 Mean :1956 Mean :13.97 3rd Qu.:1985 3rd Qu.:14.33 Max. :2019 Max. :15.93 NA's :33 Passo 2: tratando valores ausentes
A função summary() revelou que há 33 temperaturas ausentes. Você também pode verificar NAs de uma variável específica usando a função is.na(), que retorna TRUE se a observação for NA. Em seguida, é possível somar todos os valores ausentes. A função sum() converte TRUE em 1.
print(paste("There are", sum(is.na(df$TAVG)), "missing values in this dataset."))[1] "There are 33 missing values in this dataset."Como estamos trabalhando com uma série temporal, vamos preencher os valores ausentes com interpolação linear. Esse método assume que os dados variaram linearmente durante o período ausente. Aliás, quando você plota uma série temporal com um gráfico de linhas, os intervalos entre as observações, mesmo quando não há dados faltantes, também são preenchidos com uma linha reta conectando os pontos.
Para fazer a interpolação linear, vamos usar o pacote imputeTS. Depois de instalar e carregar a biblioteca, você pode usar na_interpolation() para preencher os valores ausentes. Passe dois argumentos: primeiro, a coluna do dataframe que você quer tratar e, segundo, o método a ser usado na imputação.
install.packages("imputeTS", quiet = TRUE)library(imputeTS)Registered S3 method overwritten by 'quantmod': method from as.zoo.data.frame zoo df$TAVG <- na_interpolation(df$TAVG, option ="linear")Passo 3: criando a primeira versão do gráfico
Uma visualização no ggplot2 é construída por camadas. Como na figura abaixo, cada camada contém um objeto geom — ou seja, um elemento que você vê no gráfico (linhas, pontos, etc.).
Primeiro, você precisa passar um dataset para a função ggplot(). Depois, vai mapear variáveis para estéticas — propriedades visuais de um objeto geom. Exemplos de estéticas são a posição no eixo x, a posição no eixo y, a cor e o tamanho. Para saber mais sobre ggplot, confira o curso Introduction to Data Visualization with ggplot2, do Rick Scavetta, com quem aprendi bastante sobre visualização de dados.

Camadas do ggplot2. Imagem criada pelo autor.
A seguir, nosso mapeamento (aes()) informa ao ggplot que a posição no eixo x depende da variável "DATE" e a posição no eixo y depende da temperatura. Note que, se você plotar apenas essa camada, o ggplot mostrará somente os eixos.
Antes de começar a usar o ggplot, vamos definir algumas configurações globais para aplicar a todos os gráficos. A primeira é o tamanho e a resolução. A segunda é o tema.
library(ggplot2)options(repr.plot.width = 10, repr.plot.height = 6, repr.plot.res = 150 )theme_set(theme_bw())axes <- ggplot(data = df, aes(x = DATE, y = TAVG))axes
Agora você pode adicionar uma segunda camada com pontos indicando as temperaturas ao longo do tempo. Note que dá para adicionar a camada ao gráfico criado no passo anterior.
dot_plot <- axes + geom_point()dot_plot
Por fim, você pode adicionar uma terceira camada com as linhas. É importante destacar que alguns autores afirmam que as linhas não representam dados observados e devem ser usadas com cuidado. Para uma discussão completa, consulte o capítulo 13 de Fundamentals of Data Visualization, de Claus O. Wilke.
dot_plot +geom_line()
Passo 4: personalizando seu gráfico
Nesta seção, você vai aprender a personalizar seu gráfico para deixá-lo claro, informativo e bonito.
Para tornar o aumento de temperatura mais visível, vamos mapear a estética de cor dos pontos também para "TAVG". Como é uma variável numérica, o ggplot2 usará um gradiente para representar valores contínuos como cores. Você pode escolher qual cor representa temperaturas baixas e altas com a função scale_color_gradient().
Além disso, você pode definir os rótulos dos eixos x e y com xlab() e ylab(), respectivamente. Um título pode ser adicionado com ggtitle(). Por fim, vamos aumentar o tamanho dos pontos e adicionar transparência para dar visibilidade a dados sobrepostos.
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = "#47BEFB", high = "#ED6AA8")+ggtitle("Tendência histórica da temperatura do ar em Berkeley, CA")+xlab("Ano")+ylab("Temperatura média anual em Berkeley [ºC]")
Edward Tufte, referência em visualização de dados, recomenda maximizar a proporção de tinta usada para exibir dados não redundantes. Segundo ele, isso deixa o gráfico mais claro e evita distrair o leitor.
O tema do ggplot2 que estamos usando (theme_bw()) já vai nessa direção, mas ainda podemos eliminar as grades do painel no gráfico acima. Para isso, use a função theme() e passe dois argumentos: panel.grid.minor = element_blank() e panel.grid.major = element_blank().
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = "#47BEFB", high = "#ED6AA8")+ggtitle("Tendência histórica da temperatura do ar em Berkeley, CA")+xlab("Ano")+ylab("Temperatura média anual em Berkeley [ºC]")+theme(# Elimina as grades: panel.grid.minor = element_blank(), panel.grid.major = element_blank())
Passo 5: criando um tema do ggplot2 para sua visualização
Agora você vai aprender a criar seu próprio tema no ggplot2. Como exemplo, vamos criar um theme_datacamp() para deixar o gráfico mais alinhado e harmonioso com o site da DataCamp.
Primeiro, criamos uma lista com algumas cores da DataCamp para usar depois.
datacamp_colors <- list(green = "#74F065", darkblue = "#05192D", blue = "#47BEFB", pink = "#ED6AA8")Em seguida, vamos carregar a fonte do Google chamada "Manjari" para usar no nosso tema. Você pode carregá-la facilmente com o pacote "showtext". Se ainda não tiver, instale-o.
install.packages("showtext", quiet = TRUE)Logo abaixo, carregamos o pacote e usamos a função font_add_google() para carregar a "Manjari". Também informamos ao R para renderizar textos usando o "showtext" com showtext_auto():
library(showtext)font_add_google("Manjari")showtext_auto()Loading required package: sysfontsLoading required package: showtextdbAgora, vamos usar theme() para personalizar o gráfico. A figura abaixo mostra alguns dos argumentos disponíveis. Para a lista completa, consulte a referência do ggplot2.

Argumentos do tema. Imagem criada pelo autor.
Você pode criar um novo tema com uma função que chama a função theme() do ggplot2 contendo suas especificações personalizadas. Note que partimos do tema preto e branco (theme_bw()) e então eliminamos as grades e alteramos as cores do fundo, do painel e dos textos. Além disso, adicionamos uma margem de 0,5 cm ao gráfico. Para facilitar mudanças futuras, criamos dois argumentos para o usuário especificar as cores desejadas de texto/painel e de fundo.
theme_datacamp <- function(text_panel_color, background_color) { theme_bw()+ theme(text=element_text(size=28, family="Manjari", face = "bold", color = text_panel_color), # Eliminates grids panel.grid.minor = element_blank(), panel.grid.major = element_blank(), # Changes panel, plot and legend background to dark blue panel.background = element_rect(fill = background_color), plot.background = element_rect(fill = background_color), legend.background = element_rect(fill= background_color), # Changes legend texts color to white legend.text = element_text(color = text_panel_color, margin = margin(0, 0, 0, -0.5, "cm")), legend.title = element_text(color = text_panel_color), legend.text.align = 0, # Changes color of plot border to white panel.border = element_rect(size = 1, color = text_panel_color), # Changes color of axis texts to white axis.text.x = element_text(color = text_panel_color), axis.text.y = element_text(color = text_panel_color), axis.title.x = element_text(color= text_panel_color), axis.title.y = element_text(color= text_panel_color), # Changes axis ticks color to white axis.ticks.y = element_line(color = text_panel_color), axis.ticks.x = element_line(color = text_panel_color), # Adds margin plot.margin = margin(1, 1, 1, 1, "cm") )}Agora, basta adicionar theme_datacamp() ao seu gráfico, especificando as cores preferidas. Aqui, usei as cores da DataCamp:
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Tendência histórica da temperatura do ar em Berkeley, CA")+xlab("Ano")+ylab("Temperatura média anual em Berkeley [ºC]")+theme_datacamp(text_panel_color = datacamp_colors$green, background_color = datacamp_colors$darkblue)
Por fim, você pode exibir a tendência de temperatura com um suavizador LOESS (locally estimated scatterplot smoothing), como recomendado por Claus O. Wilke no capítulo 14 de Fundamentals of Data Visualization. Para isso, adicione uma camada no ggplot com o elemento geom_smooth().
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+geom_smooth(color = datacamp_colors$green, se = FALSE)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Tendência histórica da temperatura do ar em Berkeley, CA", subtitle = "Visualização usando theme_datacamp()")+xlab("Ano")+ylab("Temperatura média anual em Berkeley [ºC]")+theme_datacamp(text_panel_color = datacamp_colors$green, background_color = datacamp_colors$darkblue)
Sinta-se à vontade para testar outras combinações de cores e fontes para criar visualizações ainda mais convincentes. Abaixo, por exemplo, eu mudo a curva LOESS, o painel e a cor do texto para branco.
ggplot(data = df, aes(x = DATE, y = TAVG, color = TAVG))+geom_point(size = 7, alpha = 0.8)+geom_smooth(color = "white", se = FALSE)+scale_color_gradient(name = "ºC", low = datacamp_colors$blue, high = datacamp_colors$pink)+ggtitle("Tendência histórica da temperatura do ar em Berkeley, CA", subtitle = "Visualização usando theme_datacamp()")+xlab("Ano")+ylab("Temperatura média anual em Berkeley [ºC]")+theme_datacamp(text_panel_color = "white", background_color = datacamp_colors$darkblue)
Conclusão
Neste tutorial, você aprendeu a usar ggplot2 no R para visualizar dados climáticos históricos de forma eficaz. Passamos por tudo: desde a busca por dados confiáveis até a criação de um tema personalizado no ggplot2 — preparando você para aumentar a conscientização sobre mudanças climáticas por meio da visualização de dados.
Como próximo passo, aprofunde-se em visualização de dados e programação em R com os cursos da DataCamp Introduction to Data Visualization with ggplot2 e Intermediate R. Eles vão ajudar você a evoluir as habilidades que adquiriu aqui e a encarar projetos mais complexos.

