4. Principais gráficos de interesse da vigilância em saúde
Até aqui você já compreendeu que as representações gráficas devem seguir algumas premissas básicas:
- Garantia de sua simplicidade: o gráfico deve ser simples para que a informação transmitida seja de rápida compreensão.
- Apresentar clareza: o gráfico deve possibilitar a correta interpretação dos valores apresentados. Escolher o melhor tipo de gráfico e suas cores é fundamental para que tenhamos sucesso nesta etapa.
- Representar informações verídicas: ao escolher personalizar um gráfico ou editá-lo você priorizar customizações que garantam a transmissão exata da realidade encontrada nos dados. Ao induzir o leitor ao erro, o gráfico perdeu sua finalidade.
Na epidemiologia, em relação ao seu formato, os gráficos podem ser classificados em três categorias, principais:
- os diagramas: gráficos dispostos em duas dimensões, mais utilizados para representar séries temporais. Os principais são: gráfico em linha ou em curva, gráfico em colunas ou em barras, em barras múltiplas e gráfico em setores (pizza);
- os cartogramas: ilustrações que representam posições geográficas ou políticas, os mapas; e
- os estereogramas: gráficos apresentados em três dimensões (3D) e utilizados para indicar volume. É empregado, por exemplo, quando precisamos indicar o número de consultas perdidas em unidade de saúde por dia da semana e sexo dos faltosos.
Nas próximas seções aprofundaremos os principais gráficos utilizados para apresentar dados epidemiológicos, siga em frente. Mas, lembre-se que o objetivo da produção gráfica neste curso é construir uma que tenha o objetivo de analisar as notificações de dengue do Estado de Rosas (fictício).

Atenção
A depender do tipo de gráfico escolhido lhe será exigido a reorganização dos dados. Fique atento, pois nas etapas a seguir deste curso você terá que transformar a base de dados todas as vezes que necessitarmos fazer gráficos.
4.1 Gráfico de barras
Vamos iniciar criando um gráfico de barras simples. O gráfico de barras é um dos mais úteis para explorar dados e tem muito destaque na vigilância em saúde. Seja para comparar categorias ou visualizar distribuição de um evento em intervalo de tempo, sempre está presente em análises de vigilância. Basicamente, o tamanho das barras representa os valores a serem representados. É comum usar o gráfico de barras para explorar variáveis categóricas. Em um eixo têm-se as barras representando a variável (e suas categorias ou intervalos) e no outro os valores correspondentes à frequência da variável.
Veja inicialmente o código, replique-o no seu RStudio
e
acompanhe a explicação a seguir.
# criando gráfico de barras para avaliação temporal da dengue
ggplot(data = dengue, aes(x = NU_ANO)) + geom_bar()
Figura 2: Gráfico de barras com a distribuição dos casos notificados de dengue, por ano.
Percebeu o como foi feito o gráfico. Com o pacote
ggplot2
, informamos o nome do objeto {dengue
}
que contém os dados no argumento data
da função
ggplot()
, nesse caso a base {dengue
}, criada
anteriormente. Também definimos a variável que contém a frequência que
vamos plotar no argumento x
, da função aes()
,
no caso a variável NU_ANO
. Com isso, foi possível fazer um
gráfico de barras com a contagem de casos por ano, utilizando o operador
+
e a função de geometria geom_bar()
.
Bem fácil, não é mesmo? A partir do gráfico acima, você pode notar que 2008 foi um ano com alto número de notificações de dengue no Estado de Rosas, seguido por dois anos de menos casos e certa estabilidade, mas com um novo aumento em 2011.
Observe que a estrutura do código envolveu as funções
ggplot()
, aes()
e geom_bar()
. O
tema de cores padrão possui fundo cinza e linhas brancas. Mas este tema
pode ser alterado especificando a função de um dos temas disponíveis com
o pacote. Além disso, também é possível alterar elementos específicos de
cada tema, como tamanho da letra do título e eixos. Alguns dos temas
disponíveis são:
theme_grey()
(outheme_gray()
): tema padrão;theme_bw()
: uma variação do padrão que usa fundo branco e linhas cinzas;theme_linedraw()
: um tema com apenas linhas pretas de várias larguras sobre fundo branco;theme_light()
: semelhante ao anterior, mas com linhas e eixos cinza claro , para dirigir mais atenção para os dados;theme_dark()
: “o primo escuro” detheme_light()
, com linhas de larguras semelhantes, mas com um fundo escuro. Útil para destacar cores de linhas finas;theme_minimal()
: um tema minimalista, sem anotações ou fundo;theme_classic()
: Um tema de aspecto “clássico”, com linhas de eixo x e y destacado e nenhuma linha de grade (as linhas internas do gráfico);theme_void()
: um tema completamente vazio.
Certo, agora vamos exercitar alterando o mesmo gráfico. Vamos alterar
o tema padrão para theme_light()
. Não é necessário nenhum
argumento adicional. Além disso, vamos alterar alguns elementos de
comunicação visual como a cor das barras, usando o argumento
fill
na função de geometria, e elementos de comunicação
textual como título e subtítulo. Nesta última alteração, vamos usar a
função labs()
e os seguintes argumentos:
• title
: título do gráfico; • subtitle
:
subtítulo do gráfico; • caption
: informação de rodapé;
•x
: título do eixo x; • y
: título do eixo
y.
Acompanhe com atenção como fica o script a seguir. Nele
estamos salvando o gráfico elaborado anteriormente no objeto
{graf_barras
}. Copie e replique os códigos em seu
RStudio
:
# Criando o objeto gráfico {`graf_barras`}
graf_barras <- ggplot(dengue, aes(x = factor(NU_ANO))) +
# Adicionando uma geometria de barras e definindo a cor do preenchimento
# das barras
geom_bar(fill = 'darkgreen') +
# Definindo os títulos dos eixos x e y, rodapé, subtítulo e título do gráfico
labs(
title = 'Casos notificados de dengue em Rosas',
subtitle = '2007 a 2012',
caption = 'Fonte: SINAN',
x = "Ano",
y = "Casos"
) +
# Definindo o tema base do gráfico
theme_light()
# Plotando o objeto `graf_barras`
print(graf_barras)
Figura 3: Gráfico de barras, na cor verde, com a distribuição dos casos notificados de dengue, por ano.
Pronto! O objeto {graf_barras
} criado pode ser
visualizado como gráfico sempre que utilizamos a função
print()
utilizando como argumento o nome do objeto ou
adicionando camadas utilizando o operador +
, como veremos a
seguir.

Repare no exemplo acima em que a variável NU_ANO
foi
transformada em fator na hora de se fazer o gráfico
(factor(NU_ANO)
). Percebeu o que mudou em relação ao
primeiro gráfico?
Além de transformar os dados antes de gerar o gráfico, algumas vezes
temos melhores resultados mudando o tipo da variável de numérica para
categórica. Neste exemplo, ao transformar a variável NU_ANO
para categórica, estamos forçando que todos os anos sejam representados
no eixo x. Caso a variável se mantivesse como numérica nem todos seriam
mostrados, sendo necessário especificar algum argumento adicional mais
detalhado para o mesmo procedimento.
É possível também customizar opções para mudar a aparência do gráfico especificando, por exemplo, tipo de fonte, cor, orientação da fonte dos eixos (90º, 45º etc..) e muitas outras opções!
Vamos seguir praticando usando o objeto {graf_barras
}
com os casos de dengue notificados no Estado de Rosas, modificando o
tema padrão, alterando o tamanho e a cor (azul-escuro) da fonte dos
eixos x e y. No eixo x, vamos girar a fonte em 45 graus.
Para as alterações, vamos utilizar a função theme()
, que
possui dezenas de argumentos que se referem a diversas formatações do
gráfico. Como vamos fazer alterações no texto dos eixos, vamos precisar
dos argumentos axis.text.x
e axis.text.y
,
utilizando a função element_text()
. Essa função controla
elementos de texto e, aqui, vamos usar:
angle
: ângulo da orientação dos títulos dos eixos;hjust
: posição horizontal do texto;size
: tamanho do texto;color
: cor do texto.
Perceba que vamos utilizar o objeto salvo anteriormente
{graf_barras
} e sobrepor novas camadas utilizando o
operador (+
). Essa estratégia é muito útil para evitar
repetir o código várias vezes. Acompanhe o script a seguir com
atenção e replique-o em seu RStudio
:
# Utilizando o objeto gráfico {`graf_barras`} salvo anteriormente
graf_barras +
# Alterando o tema do gráfico
theme(
# Alterando o texto do eixo x
axis.text.x = element_text(
angle = 45, # ângulo da orientação dos títulos
hjust = 1, # definindo a posição horizontal do texto
size = 14, # tamanho da letra
color = 'darkblue' # definindo a cor da letra
),
# Alterando o texto do eixo y
axis.text.y = element_text(
angle = 0, # ângulo da orientação dos títulos
hjust = 1, # definindo a posição horizontal do texto
size = 14, # tamanho da letra
color = 'darkblue' # definindo a cor da letra
)
)
Figura 4: Gráfico de barras, com eixos editados, da distribuição dos casos notificados de dengue, por ano.
4.2 Gráfico de linhas
Agora, vamos elaborar um gráfico de linhas com a contagem de casos por ano segundo o sexo do paciente notificado com suspeita de dengue, no estado fictício de Rosas, entre os anos de 2007 e 2012.
Para isso, precisaremos preparar uma base de dados que apresente a contagem que precisamos, conforme apresentado na Tabela 3:
- primeiro, vamos salvar o resultado dos próximos passos ao objeto
{
dengue_ano
}, - em seguida, vamos agrupar os dados por ano e sexo,
- vamos filtrar os casos cuja categoria da variável sexo
(
CS_SEXO
) sejam diferentes de ignorado (‘I’), - realizaremos a contagem conforme os grupos, e
- por último, utilizaremos a função
head()
.
Acompanhe o script a seguir e replique-o em seu
RStudio
:
# Criando a tabela {`dengue_ano`}
dengue_ano <- dengue |>
# Filtrando os registros cuja coluna `CS_SEXO` não tenha registros como `I`
filter(CS_SEXO != 'I') |>
# Agrupando as notificações pelo ano e sexo
group_by(NU_ANO, CS_SEXO) |>
# Contando a frequência de notificações
count(name = 'n_casos')
Agora, vamos visualizar as primeiras linhas com o script a
seguir. Repita em seu RStudio
:
Tabela 3: Organização dos dados para criação do gráfico de linhas (Figura 5).
Com o dado preparado, vamos utilizar na camada de geometria a função
geom_line()
. Como recurso estético, vamos padronizar que
cada sexo no gráfico tenha uma cor, inserindo o nome da variável no
argumento color
dentro da função aes()
. Vamos
também aumentar a espessura das linhas usando o argumento
size
na função geom_line()
. Usaremos as
definições de tema apresentadas anteriormente com recursos visuais
adicionais ao tema theme_light()
.
Os resultados desses procedimentos serão salvos em um objeto chamado
graf_linhas
. Acompanhe o código a seguir e copie em seu
RStudio
:
# Criando o objeto gráfico {`graf_linhas`}
graf_linhas <- ggplot(data = dengue_ano) +
# Definindo argumentos estéticos com as variáveis usadas em x e em y
# e definindo a variável usada para a cor dos pontos
aes(x = NU_ANO, y = n_casos, color = CS_SEXO) +
# Adicionando a geometria de linhas e definindo espessura
geom_line(size = 1.2) +
# Definindo os títulos dos eixos x e y, rodapé, subtítulo e título do gráfico.
# Para legenda, estamos definindo que o título será "Sexo"
labs(
title = 'Casos notificados de dengue em Rosas segundo sexo',
subtitle = '2007 a 2012',
caption = 'Fonte: SINAN',
x = "Ano",
y = "Casos",
color = "Sexo"
) +
# Definindo o tema base
theme_light() +
# Alterando o tema do gráfico
theme(
# Alterando o texto do eixo x
axis.text.x = element_text(
angle = 0,
hjust = 0.5,
size = 12,
color = 'darkblue'
),
# Alterando o texto do eixo y
axis.text.y = element_text(
angle = 0,
hjust = 1,
size = 12,
color = 'darkblue'
)
)
# Plotando o objeto `graf_linhas`
graf_linhas
Figura 5: Gráfico de linhas, com legenda à direita, da distribuição dos casos de dengue segundo sexo.
Você percebeu que estamos, pouco a pouco, aumentando os elementos e
complexidade da elaboração de um gráfico? No próximo exemplo vamos
adicionar uma camada de geometria de pontos de tamanho maior sobre as
linhas (size = 3
) e alterar a posição da legenda do lado
direito para baixo. Como o objeto gráfico foi salvo anteriormente
(graf_linhas
), vamos somente utilizar o operador
+
. Acompanhe o código a seguir e repita o processo no seu
RStudio
:
# Utilizando o objeto gráfico {`graf_linhas`} salvo anteriormente
graf_linhas +
# Adicionando a geometria de pontos e definindo o tamanho
geom_point(size = 3) +
# Alterando o tema do gráfico e posicionando a legenda na
# parte inferior do gráfico
theme(legend.position = 'bottom')
Figura 6: Gráfico de linhas, com legenda inferior central, da distribuição dos casos de dengue segundo sexo.
No gráfico acima, você pode notar a diferença em números absolutos dos casos notificados de dengue segundo o sexo do paciente, sendo as mulheres mais acometidas.
O gráfico de linhas é muito útil para visualização de séries
temporais. Para visualizar um exemplo de um gráfico que aborde esta
temática, vamos retornar aos dados da UF de Rosas. Mas, agora, além de
criar variáveis para semana e ano referentes ao calendário
epidemiológico, vamos determinar a data de início da semana
epidemiológica utilizando a função get_date()
do pacote
aweek
. Essa função tem como argumentos principais a semana
(argumento week
) e o ano de referência (argumento
year
) para retorno da data adequada.
Por fim, vamos contar o número de eventos entre grupos de ano, semana
e data inicial da semana e atribuir o resultado a um objeto chamado
dengue_semana
.
Veja a seguir o script completo e replique-o em seu computador:
# Criando o objeto {`dengue_semana`}
dengue_semana <- dengue |>
# Filtrando os registros com data de primeiros sintomas maior ou igual
# a data de primeiro de janeiro de 2007.
filter(DT_SIN_PRI >= '2007-01-01') |>
# Utilizando a função `mutate()` para criar novas colunas
mutate (
# 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ógicos dos primeiros sintomas
ANO_EPI = epiyear(DT_SIN_PRI),
# Criando uma nova coluna chamada 'DT_INI_SEM` de data de início
# da semana epidemiológica
DT_INI_SEM = get_date(week = SEM_EPI, year = ANO_EPI)
) |>
# Agrupando as notificações pelo ano epidemiológico, semana
# epidemiológica e data de início da semana epidemiológica
group_by(ANO_EPI, SEM_EPI, DT_INI_SEM) |>
# Contando a frequência de notificações
count(name = 'n_casos')
O objeto salvo do código acima será utilizado para a criação de um gráfico de linhas com escala de tempo mais detalhada, no caso dia. Usaremos novamente a função geom_line() para obter uma linha que representa a evolução do número de casos de dengue no decorrer do tempo.

Atenção
Lembre-se que você deverá sempre verificar se todos os pacotes
necessários foram instalados e carregados no R
, caso
encontre algum aviso (warning) ou erro (error) revise seu código
cuidadosamente e rode-o novamente.
Como recurso estético, vamos alterar a cor e a espessura da linha e
utilizar o tema theme_classic()
. Outros comandos para
alterar o visual do gráfico também estão sendo utilizados como:
plot.title
: altera o visual do título do gráfico;plot.subtitle
: altera o visual do subtítulo do gráfico;axis.title.x
: altera o visual do título do eixo x;axis.title.y
: altera o visual do título do eixo y.
Todas os argumentos que alteram visual de texto devem utilizar a
função auxiliar element_text()
.
O resultado desses procedimentos está sendo salvo no objeto chamado
{graf_linhas2
}. Acompanhe o script a seguir e
replique-o em seu RStudio
:
# Criando o objeto gráfico {`graf_linhas2`}
graf_linhas2 <- ggplot(data = dengue_semana) +
# Definindo argumentos estéticos com as variáveis usadas em x e em y
aes(x = DT_INI_SEM, y = n_casos) +
# Adicionando a geometria de linhas e definindo cor e espessura
geom_line(color = 'darkgreen', size = 1) +
# Definindo os títulos dos eixos x e y, rodapé, subtítulo e título do gráfico
labs(
title = 'Casos notificados de dengue em Rosas',
subtitle = '2007 a 2012',
caption = 'Fonte: SINAN',
x = "Ano",
y = "Casos"
) +
# Definindo o tema base
theme_classic() +
# Alterando o tema do gráfico
theme(
# Alterando o texto do eixo x
axis.text.x = element_text(
angle = 45,
hjust = 1,
size = 14,
color = 'darkblue'
),
# Alterando o texto do eixo y
axis.text.y = element_text(
angle = 0,
hjust = 1,
size = 14,
color = 'darkblue'
),
# Alterando o tamanho e cor da letra do título do gráfico
plot.title = element_text(size = 16, color = 'darkblue'),
# Alterando o tamanho e cor da letra do subtítulo do gráfico
plot.subtitle = element_text(size = 16, color = 'darkblue'),
# Alterando o tamanho, cor e estilo da letra do título do eixo x
axis.title.x = element_text(size = 14, color = 'darkblue', face = "bold"),
# Alterando o tamanho, cor e estilo da letra do título do eixo y
axis.title.y = element_text(size = 14, color = 'darkblue', face = "bold")
)
# Plotando o objeto `graf_linhas2`
graf_linhas2
Figura 7: Gráfico de linhas da distribuição dos casos de dengue por dia e ano.
O gráfico {graf_linhas2
} (Figura 7) possui o eixo x
apresentando a escala de tempo em anos. Mas o objeto que utilizamos para
a criação do gráfico está na escala de dias. Caso mudemos o eixo para
dias, ficará difícil de diferenciar, pois são muitos dias e o eixo
ficará poluído com muito texto. Vamos formatar a escala para apresentar
as datas a cada 6 meses. Vamos utilizar uma função de escala de data
chamada scale_x_date()
para isso.
Com a função scale_x_date()
vamos definir dois
argumentos: um para a quebra das datas chamado date_breaks
e outro para o rótulo das datas que aparecerá no eixo x, chamado
date_labels
. Note que no argumento date_labels
estamos usando símbolos para repassar ao R
o formato de
datas que queremos. Na expressão %b/%Y
, o %b
significa mês abreviado (jan, fev, mar) e o %Y
significa
que o ano será no formato completo, com quatro dígitos. Para separar mês
e ano estamos usando uma barra /
.
Replique o código a seguir no script que você está
construindo em seu RStudio
:
# Utilizando o objeto gráfico {`graf_linhas2`} salvo anteriormente
graf_linhas2 +
# Arrumando o eixo x, definindo os intervalos dos marcadores de datas
# (`date_breaks`) serão mostrados que, no caso, será uma sequência de
# 6 em 6 meses
scale_x_date(date_breaks = '6 months', date_labels = '%b/%Y') +
# Alterando o tema do gráfico
theme(
# Alterando o texto do eixo x
axis.text.x = element_text(
angle = 90,
hjust = 1,
size = 14,
color = 'grey32'
),
# Alterando o texto do eixo y
axis.text.y = element_text(
hjust = 1,
size = 14,
color = 'grey32'
)
)
Figura 8: Gráfico de linhas da distribuição dos casos de dengue por mês e ano.
Na Figura 8 você pode notar a distribuição dos casos notificados de dengue de 2007 a 2012. Como a escala dos dados e do eixo foram alterados, temos mais detalhes da distribuição. Em 2008 o pico de notificação foi entre março e abril, meses com pico aproximado de 800 casos notificados. Em 2011, o cenário foi similar, reproduzindo o mesmo padrão, mas com aproximados 400 casos no mês de pico.

Séries Temporais
Existem dois tipos básicos de séries temporais: as séries regulares e os irregulares, também conhecidas como “séries calendário”.
Nas séries regulares existe a necessidade de se definir um período regular de tempo, por exemplo, todos os anos têm 12 meses (ou seja, uma frequência = 12) e isso não muda, é regular. Assim é possível analisarmos elementos que compõem uma série temporal como tendência, sazonalidade e ciclicidade, mesmo que nem todos os meses tenham o mesmo número de dias.
Já as séries irregulares não possuem uma estrutura regular. Por exemplo, as semanas epidemiológicas que, em geral, possuem 52 semanas, mas, às vezes, o ano possui 53 semanas. Essa irregularidade impossibilita tratá-la com as mesmas ferramentas das séries regulares. Existem estratégias que permitem transformar uma série irregular, normalizando, no exemplo das semanas, o ano em 52 semanas.
O R
possui muitos pacotes para construir, aprimorar e
melhorar as séries temporais.
4.3 Gráfico de barras sobreposto
O gráfico de barras sobreposto ou empilhado é uma variante do gráfico de barras. Neste último temos, basicamente, duas variáveis sendo visualizadas e, no gráfico de barras sobrepostas, temos que cada barra é subdividida em outras barras que ficam empilhadas. Essas “sub-barras” representam uma espécie de cruzamento de uma variável com outra e que, juntas, definem o tamanho das barras. Vejamos na prática.
Vamos elaborar um gráfico de barras sobrepostas usando as variáveis
sexo (CS_SEXO
) e ano (NU_ANO
), bem como a
contagem de casos notificados de dengue por ano. A base de dados será a
que preparamos no exemplo anterior. Aqui, vamos comparar o número de
casos de dengue por ano e analisar a “contribuição” de cada categoria da
variável sexo no total de casos em cada ano.
No ggplot2
, esse gráfico utiliza a geometria
geom_col()
. Temos que a estrutura básica é a base de dados
dengue_ano
, a variável do eixo x será o ano
(NU_ANO
) e no eixo y o número de casos
(n_casos
). Agora, para que o R
entenda que
temos uma terceira variável, vamos preencher as barras com as categorias
da variável sexo (CS_SEXO
) usando o argumento
fill
. Mas cuidado! Esse argumento está presente apenas nas
geometrias que possuem uma área a ser preenchida.
Para que as barras estejam sobrepostas, vamos utilizar o argumento
position
dentro da função geom_col()
. Esse
argumento recebe a definição de stack
, que remete, em
português, a algo empilhado. Veja o script a seguir e replique
no seu computador:
# Criando o objeto gráfico {`graf_barras_sobrepostas`}
graf_barras_sobrepostas <- ggplot(data = dengue_ano) +
# Definindo argumentos estéticos com as variáveis usadas em x e em y
# e a variável usada para o preenchimento das colunas
aes(x = NU_ANO, y = n_casos, fill = CS_SEXO) +
# Adicionando a geometria de colunas e definindo o tipo empilhado
geom_col(position = 'stack') +
# Definindo os títulos dos eixos x e y, rodapé, subtítulo e título do gráfico.
# Para a legenda, estamos definindo o título como "Sexo"
labs(
title = 'Casos notificados de dengue em Rosas',
subtitle = '2007 a 2012',
caption = 'Fonte: SINAN',
x = "Ano",
y = "Casos",
fill = 'Sexo'
) +
# Arrumando o eixo x, definindo quais os marcadores (`breaks`)
# serão mostrados que, no caso, será uma sequência de 2007 a 2012,
# referente aos anos.
scale_x_continuous(breaks = 2007:2012) +
# Definindo o tema base
theme_light()
# Plotando o objeto `graf_barras_agrupadas`
graf_barras_sobrepostas
Figura 9: Gráfico de barras empilhadas da distribuição de casos de dengue por sexo.
Note que para a plotar o gráfico de barras empilhado (Figura 9)
usamos um novo argumento dentro da função labs()
, chamado
fill
. Isso foi necessário para que o ggplot2
coloque um nome na legenda. Note também que usamos uma escala para o
eixo x (scale_x_continuous
). Com essa escala podemos
definir quebras (os breaks
) para que o eixo x tenha os
rótulos definidos.
Para alterar a posição das barras de empilhadas para agrupadas, basta
especificar o argumento position
para dodge
dentro da função geom_col
. Veja o script a seguir
e replique no seu computador:
# Criando o objeto gráfico {`graf_barras_agrupadas`}
graf_barras_agrupadas <- ggplot(data = dengue_ano) +
# Definindo argumentos estéticos com as variáveis usadas em x e em y
# e a variável usada para o preenchimento das colunas
aes(x = NU_ANO, y = n_casos, fill = CS_SEXO) +
# Adicionando a geometria de colunas e definindo o tipo agrupado
geom_col(position = 'dodge') +
# Definindo o título da legenda das cores usadas para preenchimento
# das colunas
labs(fill = 'Sexo') +
# Arrumando o eixo x, definindo quais os marcadores (`breaks`)
# serão mostrados que, no caso, será uma sequência de 2007 a 2012,
# referente aos anos.
scale_x_continuous(breaks = 2007:2012) +
# Definindo o tema base
theme_light()
# Plotando o objeto `graf_barras_agrupadas`
graf_barras_agrupadas
Figura 10: Gráfico de barras agrupadas da distribuição de casos de dengue por sexo.
4.4 Gráfico de pontos
O gráfico de pontos é também conhecido como diagrama de dispersão,
gráfico de dispersão ou scatterplot. Esse gráfico representa um
conjunto de observações devidamente posicionadas nos eixos x e y a
partir de duas variáveis numéricas. São úteis para
visualizar correlações entre as variáveis. No ggplot2
, esse
gráfico utiliza a geometria geom_point()
.
Usaremos a base de dados do VIGITEL 2015, que apresentamos no início.
Para visualizar a diferença das observações segundo o sexo, vamos
definir o argumento colour
com esta variável.
Veja a seguir o script e replique-o em seu computador:
ggplot(data = vigitel) +
# Definindo argumentos estéticos com as variáveis usadas em x e em y
# e a variável usada para as cores dos pontos
aes(x = peso, y = altura, colour = sexo) +
# Adicionando a geometria de pontos
geom_point()
#> Warning: Removed 5557 rows containing missing values (geom_point).
Figura 11: Gráfico de pontos da distribuição da variável peso com a variável altura, segundo sexo, dos entrevistados no VIGITEL 2015.
Ao gerar este gráfico, um aviso (warning) aparece,
informando que 5.557 linhas foram removidas do gráfico por conter
valores faltantes (NA
). Isso é devido a não ser
possível posicionar o ponto sem que tenha algum valor registrado na
variável e no banco do VIGITEL 2015 algumas pessoas não
responderam a algumas perguntas, sendo os dados classificados como
faltantes (ou missings).

Atenção
Algumas vezes encontramos bancos de dados com valores “9”, “99”, ou “999” que representam valores ignorados. Esses valores devem ser excluídos das análises e representações gráficas para não gerar análises equivocadas. Desta forma é muito importante que você conheça os vieses e limitações da base de dados que está analisando, e tenha sempre seu dicionário de variáveis em mãos.
É recomendável que se faça a avaliação de estatísticas descritivas básicas antes de qualquer análise e construção gráfica. Para mais informações acesse o curso “Análise de dados para a vigilância em saúde – curso básico” disponível em https://www.abrasco.org.br/site/analise-de-dados-para-a-vigilancia-em-saude/
Dando continuidade, vamos inserir alguns elementos de comunicação e
outros visuais que tornam o gráfico mais agradável. Acompanhe o código e
replique em seu RStudio
:
ggplot(data = vigitel) +
# Definindo argumentos estéticos com as variáveis usadas em x e em y
# e a variável usada para o preenchimento das barras do histograma
aes(x = peso, y = altura, colour = sexo) +
# Adicionando a geometria de pontos e definindo o tamanho do ponto
geom_point(size = 1.5) +
# Definindo os títulos dos eixos x e y, rodapé, subtítulo e título do gráfico.
# Para legenda, estamos definindo o título para "Sexo".
labs(
title = 'Vigilância de Fatores de Risco e Proteção para Doenças Crônicas',
subtitle = 'Inquérito por telefone Vigitel',
caption = 'Fonte: Vigitel, 2015.',
x = "Peso (kg)",
y = "Altura (cm)",
colour = "Sexo"
) +
# Definindo o tema base
theme_light()
#> Warning: Removed 5557 rows containing missing values (geom_point).
Figura 12: Gráfico de pontos, com título e subtítulo, da distribuição da variável peso com a variável altura, segundo sexo, dos entrevistados no VIGITEL 2015.
No gráfico acima, cada ponto representa uma pessoa entrevistada na pesquisa do VIGITEL. A posição em x representa o peso em quilos da pessoa e a posição em y representa a altura em centímetros. A partir do gráfico percebe-se que, quando o peso aumenta, a altura também aumenta e homens têm altura e peso maior.
4.5 Histogramas
O histograma possui um visual muito parecido com o gráfico de barras, mas possui, de certa forma, uma interpretação diferente. Cada barra representa um intervalo de valores da variável analisada, geralmente no eixo x. No eixo y, é mostrada a frequência dos intervalos mostrados no eixo x e, dessa forma, a altura da barra significa sua maior ou menor frequência.
Os histogramas são muito úteis para visualizar a distribuição de variáveis numéricas. Entretanto, na área da vigilância em saúde, é também útil para visualizar a curva epidêmica de uma doença. Para exemplificar seu uso, vamos utilizar a base de casos notificados de dengue utilizados em exemplos anteriores e oriundos da base do estado fictício de Rosas.
Vamos filtrar os dados para o ano epidemiológico de 2008 usando a
função filter()
do pacote dplyr
e salvar em um
objeto chamado {dengue_2008
} e depois utilizá-lo no nosso
gráfico. Observe o código a seguir e replique-o em seu
RStudio
:
# Criando o objeto dataframe {`dengue_2008`}
dengue_2008 <- dengue |>
# Filtrando os registros com ano epidemiológico igual a 2008
filter(ano_epi == 2008)
Agora observe no código a seguir que no eixo x definiremos a variável
de data dos primeiros sintomas (DT_SIN_PRI
) e
“preencheremos” o gráfico com as categorias da variável sexo
(CS_SEXO
), utilizando o argumento fill
. A
geometria para histograma é representada pela função
geom_histogram()
.
Acompanhe o script a seguir e replique-o em seu
RStudio
para produzir o gráfico apresentado na Figura
13.
# Utilizando a tabela {`dengue_2008`} criada anteriormente
ggplot(data = dengue_2008) +
# Definindo argumentos estéticos com as variáveis usadas em x e em y
# e a variável usada para o preenchimento das barras do histograma
aes(x = DT_SIN_PRI, fill = CS_SEXO) +
# Adicionado geometria de colunas de histograma
geom_histogram() +
# Definindo os títulos dos eixos x e y, rodapé, subtítulo e título do gráfico.
# Para legenda, estamos definindo o título para "Sexo".
labs(
title = "Distribuição dos casos notificados de dengue, Rosas, 2008.",
caption = 'Fonte: SINAN',
x = "Data dos primeiros sintomas",
y = "Frequência",
fill = 'Sexo'
) +
# Definindo o tema base
theme_light()
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Figura 13: Histograma da distribuição dos casos de dengue em Rosas segundo sexo em 2018.
O histograma acima, Figura 13, apresenta a distribuição da frequência
dos casos de dengue no decorrer de 2008. Percebemos que a concentração
dos casos notificados foi no primeiro semestre, com pico em abril de
2008. Note que a Figura 13 difere do gráfico de linhas apresentado na
Figura 7. No histograma as barras representam a frequência de casos em
intervalos de classes (chamados pelo pacote ggplot2
de
bins).