3. Criando gráficos

O ggplot2 é um pacote do R criado por Hadley Wickham, que faz parte do universo do tidyverse. Esse pacote implementa um sistema de gráficos para visualização de dados, permitindo, inclusive, a criação de gráficos avançados.

O ggplot2 é diferente dos demais pacotes gráficos existentes no R, por simplificar algumas etapas de produção gráfica. Em um primeiro contato você pode encontrar dificuldades para utilizá-lo, mas após se familiarizar com ele é possível obter gráficos completos, com multicamadas e com excelente qualidade visual de forma rápida e efetiva. Acredite, por meio da combinação de seus diversos elementos em poucas linhas de código ele vai revolucionar a sua rotina de trabalho.


Atualmente, podemos encontrar mais de 70 pacotes do R que estendem ou implementam funções gráficas da ggplot2. Clique aqui e conheça alguns exemplos.


Observe na Tabela 2 a seguir os principais elementos (camadas) que utilizaremos aplicando funções do ggplot2.


Tabela 2: Principais camadas, sua descrição e as respectivas funções correspondentes do ggplot2.


Atenção

Para fazer um gráfico com o ggplot2 precisamos ao menos das camadas de Dados, Estética e Geometria.

As diversas camadas são aplicadas concomitantemente quando utilizamos o operador + (soma). Neste caso, não devemos aplicar o pipe ( |> ou %>%) .

Atualmente, diversos pacotes atuam como extensão ao ggplot2, adicionando novas funcionalidades. Neste curso usaremos alguns desses pacotes complementares.


3.1 Organizando os dados

O primeiro passo para se fazer um gráfico é conhecer o dado a ser apresentado e adequá-lo à visualização proposta. Cada tipo de gráfico exigirá uma organização específica dos dados para se obter o resultado desejado. Como segundo exercício prático neste curso você construirá gráficos que visualizem os dados para avaliação das notificações de dengue do Estado de Rosas (fictício). Para isso você precisará organizar informações que possam apresentar a situação das notificações do estado entre os anos 2007 e 2012 para o secretário de saúde.

Para isso, primeiro precisaremos exportar o nosso banco de dados. Os dados disponibilizados foram exportados do Sinan Net do Estado de Rosas: é o arquivo de nome {NINDNET.dbf} que está disponível no menu lateral “Arquivos” do Ambiente Virtual do curso. Clique e faça o download para seguirmos com as análises.

Vamos lá?! Carregue e instale os pacotes necessários para produção gráfica. Escreva as linhas de código a seguir no script do seu RStudio:

# Esta primeira linha verifica se o pacote está instalado.
# Caso não esteja, irá prosseguir com a instalação
if(!require(foreign)) install.packages("foreign");library(foreign)
if(!require(knitr)) install.packages("knitr");library(knitr)
if(!require(lubridate)) install.packages("lubridate");library(lubridate)
if(!require(aweek)) install.packages("aweek");library(aweek)
if(!require(xts)) install.packages("xts");library(xts)
if(!require(plotly)) install.packages("plotly");library(plotly)
if(!require(ggTimeSeries)) install.packages("ggTimeSeries");library(ggTimeSeries)


Em seguida, importaremos a base de dados {NINDINET.DBF}, que se refere às notificações realizadas entre 2007 e 2012 de um estado fictício chamado Rosas. Para isso, vamos utilizar a função read.dbf() do pacote foreign. Note que o argumento as.is marcado como TRUE na função transforma as variáveis da base de dados no tipo character. Acompanhe o script a seguir e replique-o em seu RStudio:

# criando objeto do tipo dataframe (tabela) {`nindi`} com o banco de dados 
# {`NINDINET.dbf`}
nindi <- read.dbf('Dados/NINDINET.dbf', as.is = TRUE)

Pronto. Com a base importada, vamos filtrar os registros cujo agravo de notificação foi dengue (campo ID_AGRAVO com registro “A90”). Além disso, vamos transformar a variável data dos primeiros sintomas (DT_SIN_PRI), armazenada como character, para date utilizando a função ymd do pacote lubridate. Essa função reconhece os separadores típicos de datas e atribui um formato adequado à variável.

A partir da variável DT_SIN_PRI, vamos criar três novas variáveis também utilizando funções do pacote lubridate. São elas:

  • epiweek(): retorna a semana epidemiológica a partir de uma variável do tipo data.
  • epiyear(): retorna o ano conforme o calendário epidemiológico.
  • month(): retorna o mês referente ao calendário normal.

Também será necessário alterar o tipo da variável NU_ANO para o tipo numeric. Veja a seguir o script completo e replique-o em seu RStudio:

# Criando a tabela {`dengue`}
dengue <- nindi |>
  
  # Filtrando os registros de casos de dengue (CID = A90)
  filter(ID_AGRAVO == 'A90') |>
  
  # Criando novas colunas
  mutate(
    
    # Transformando a variável `DT_SIN_PRI` para data
    DT_SIN_PRI = ymd(DT_SIN_PRI),
    
    # Criando uma nova coluna chamada 'sem_epi', referente à semana
    # epidemiológica dos primeiros sintomas
    sem_epi = epiweek(DT_SIN_PRI),
    
    # Criando uma nova coluna chamada 'ano_epi', referente ao ano epidemiológico
    # dos primeiros sintomas
    ano_epi = epiyear(DT_SIN_PRI),
    
    # Criando uma nova coluna chamada 'mes', referente ao mês dos primeiros sintomas
    mes = month(DT_SIN_PRI),
    
    # Transformando a coluna `NU_ANO` no tipo numérico
    NU_ANO = as.numeric(NU_ANO)
  )

Pronto já temos os dados necessário para criar as nossas visualizações de dados (DataViz).