A visualização é uma tarefa fundamental em todo o processo de análise de dados, desde a análise exploratória, onde compreendemos o banco e retiramos os primeiros insights, até etapas mais avançadas de modelagem e validação de resultados.
Para auxiliar na tarefa de gerar visualizações no R, vamos primeiro gerar, aleatoriamente, um conjunto de dados de exemplo.
Vamos utilizar as funções rnorm(), para geração de
números aleatórios, e sample(), para amostrar também
aleatoriamente de um conjunto de valores possíveis. Usamos a função
set.seed() apenas para garantir a reprodutibilidade dos
resultados.
set.seed(123)
dados <- data.frame(
id = 1:100,
idade = round(rnorm(100, mean=42, sd=18)),
sexo = sample(c("Masculino", "Feminino"), 100, replace = TRUE),
pressao_sistolica = rnorm(100, 120, 15),
pressao_diastolica = rnorm(100, 80, 10),
colesterol = rnorm(100, 200, 30)
)
head(dados)## id idade sexo pressao_sistolica pressao_diastolica colesterol
## 1 1 32 Feminino 131.8161 76.24397 230.4483
## 2 2 38 Feminino 131.5356 74.38124 140.2175
## 3 3 70 Feminino 124.9830 76.56083 187.1816
## 4 4 43 Masculino 104.8744 80.90497 203.4991
## 5 5 44 Feminino 118.2082 95.98509 173.2038
## 6 6 73 Feminino 115.7941 79.11435 210.0171
O R por si já possui diversas funcionalidades para geração e customização de visualizações. Vamos explorar algumas delas.
Os histogramas são úteis para visualização da distribuição de uma variável contínua. Aqui, vamos olhar a distribuição da idade:
Podemos melhorar a nossa visualização ao especificar parâmetros de
customização à função:
hist(dados$idade, main = "Distribuição de Idade", xlab = "Idade", ylab = "Frequência", col = "deepskyblue", border = "black")
Utilizados majoritariamente para variáveis categóricas, os gráficos de barras são úteis para mostrar a frequência, absoluta ou relativa, ou alguma outra métrica em cada categoria:
tab <- table(dados$sexo)
barplot(tab, main = "Distribuição por Sexo", col = c("green4", "purple4"), xlab = "Sexo", ylab = "Contagem")
Gráficos de dispersão (scatterplots) são úteis para analisar possíveis relações entre duas variáveis contínuas. Vamos utilizar nossos dados aleatórios de pressão sistólica e diastólica.
plot(dados$pressao_sistolica, dados$pressao_diastolica, main = "Relação entre Pressão Sistólica e Diastólica", xlab = "Pressão Sistólica", ylab = "Pressão Diastólica", pch = 19, col = "blue")
Por fim, os boxplots são frequentemente usados para analisar a distribuição de uma variável contínua. Um boxplot, ou diagrama de caixa, é uma representação gráfica que resume a distribuição de um conjunto de dados. Ele mostra a mediana, quartis, e possíveis valores atípicos de uma variável contínua.
A caixa formada no gráfico representa o intervalo interquartil (IQR), que é a diferença entre o primeiro quartil (Q1, o 25º percentil) e o terceiro quartil (Q3, o 75º percentil) da variável. A linha dentro da caixa representa a mediana. Os “bigodes” estendem-se dos quartis até o valor mais extremo que não é considerado um outlier (distância calculada tipicamente como sendo 1,5 vezes o IQR). Os outliers, portanto, são pontos que estão além dos bigodes, representando observações mais extremas, ou aberrantes, e são plotados no gráfico como pontos individuais.
Vamos gerar os boxplots da pressão sistólica de acordo com sexo:
boxplot(pressao_sistolica ~ sexo, data = dados, main = "Pressão Sistólica por Sexo", xlab = "Sexo", ylab = "Pressão Sistólica", col = c("green4", "purple4"))
{ggplot2}O ggplot2 é um dos pacotes mais utilizados no R e
introduz uma nova gramática de composição de gráficos.
Ele possui uma infinidade de possibilidades de customização e geração de
todo tipo de gráfico. Muitos estão disponíveis através de extensões
desenvolvidas do próprio pacote.
Todo gráfico ggplot inicia-se com um comando ggplot(),
onde usualmente informa-se a base de dados com que se irá desenvolver o
gráfico. A lógica passa pela especificação do componente de estéticas
(aes()), que mapeará cada variável para um componente
específica do gráfico, por exemplo: Idade no eixo x, pressão no eixo y,
e sexo como cor dos pontos no gráfico. Vamos ver como ficaria esse
exemplo:
library(ggplot2)
ggplot(dados, #especificando a base de dados
aes( # informando as estéticas
x = idade, # idade no eixo x
y = pressao_sistolica, # pressao sistolica no eixo y
color = sexo # sexo nas cores do gráfico
)) +
geom_point() # indica que se deseja um gráfico de pontos
Viu só? Essa é a lógica básica de todos os gráficos ggplot. Pode-se
especificar estéticas específicas para cada componente do gráfico, como
geom_point(), geom_line(),
geom_boxplot()… Para mais exemplos de gráficos em ggplot,
recomenda-se o material de visualização do curso de Ciência de Dados do
Curso-R.