Visualização de Dados – Prova Final


Discente: Otávio Diego da Silva
Data: 16/12/2025


1. Exercício

1.1 – Introdução ao ggplot2

O gráfico a seguir apresenta a relação entre o peso do veículo (wt) e o consumo de combustível (mpg), utilizando o dataset mtcars. A cor diferencia os veículos pelo número de cilindros.

library(ggplot2)
library(dplyr)
## 
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
## 
##     filter, lag
## Os seguintes objetos são mascarados por 'package:base':
## 
##     intersect, setdiff, setequal, union
data(mtcars)

ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
  geom_point(size = 3) +
  labs(
    title = "Relação entre Peso e Consumo de Combustível",
    x = "Peso do veículo (wt)",
    y = "Milhas por galão (mpg)",
    color = "Cilindros"
  ) +
  theme_minimal()

1.2 – Gráficos de Barras

O gráfico a seguir apresenta a contagem de diamantes por tipo de corte (cut), utilizando o dataset diamonds.
Em seguida, o gráfico é modificado para:
(a) ordenar as barras em ordem decrescente
(b) adicionar rótulos de valor
(c) aplicar uma paleta de cores divergente

library(ggplot2)
library(dplyr)

data(diamonds)

df_cut <- diamonds %>%
  count(cut) %>%
  arrange(desc(n))

ggplot(df_cut, aes(x = reorder(cut, -n), y = n, fill = cut)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = n), vjust = -0.3, size = 4) +
  scale_fill_brewer(palette = "Spectral") +
  labs(
    title = "Contagem de Diamantes por Tipo de Corte",
    x = "Tipo de Corte",
    y = "Quantidade"
  ) +
  theme_minimal()

1.3 – Customização Avançada

Objetivos: (a) Criar boxplot da variável price por tipo de corte (cut) (b) Personalizar rótulos e títulos em português (c) Aplicar cores específicas para cada categoria de corte (d) Remover legenda (opcional, conforme solicitado) (e) Ajustar ângulo dos rótulos do eixo X Definição das cores personalizadas para cada nível de “cut”

library(ggplot2)
library(dplyr)


cores <- c(
  "Fair" = "#1b9e77",
  "Good" = "#d95f02",
  "Very Good" = "#7570b3",
  "Premium" = "#e7298a",
  "Ideal" = "#66a61e"
)

# Construção do boxplot
ggplot(diamonds, aes(x = cut, y = price, fill = cut)) +
  geom_boxplot() +
  scale_fill_manual(values = cores) +
  labs(
    title = "Distribuição dos Preços por Tipo de Corte",
    x = "Tipo de Corte",
    y = "Preço (USD)"
  ) +
  theme_minimal() +
  theme(
    axis.text.x = element_text(angle = 35, hjust = 1),
    legend.position = "none"   # remoção da legenda
  )

1.4 – Conceitos Fundamentais

Diferença entre geom_point() e geom_jitter():

  • geom_point(): Plota cada ponto exatamente na coordenada original (x, y). É mais indicado quando:
    • há pouca sobreposição de pontos,
    • a distribuição é bem separada,
    • é importante manter o valor exato no gráfico.
  • geom_jitter(): Adiciona um pequeno deslocamento aleatório (jitter) aos pontos. É usado quando:
    • há sobreposição de valores (overplotting),
    • muitos pontos compartilham o mesmo valor,
    • é necessário revelar a densidade real de observações.

O jitter não modifica os dados, apenas desloca visualmente os pontos para facilitar a interpretação.

Gramática dos Gráficos (Grammar of Graphics):

A Gramática dos Gráficos, proposta por Leland Wilkinson (1999), define que um gráfico é construído a partir da combinação de componentes fundamentais:

  • dados (data)
  • mapeamentos estéticos (aesthetics / aes)
  • geometrias (geoms): pontos, linhas, barras, boxplots etc.
  • estatísticas (stats): contagens, transformações, resumos
  • escalas (scales): cores, tamanhos, eixos
  • facetas (facets): divisão do gráfico em painéis
  • temas (themes): estilo visual, títulos, fundo

O pacote ggplot2 implementa essa gramática por meio de camadas (layers), permitindo criar gráficos modulares, organizados e reprodutíveis.

Dessa forma, cada visualização no ggplot2 é a soma estruturada desses elementos.

Conclusão

A realização dos exercícios permitiu consolidar os principais fundamentos da visualização de dados utilizando o ecossistema R, especialmente por meio da biblioteca ggplot2. Cada atividade reforçou a importância de compreender a lógica da Grammar of Graphics, que possibilita construir gráficos de forma estruturada, interpretável e reprodutível.

Ao trabalhar com diferentes tipos de visualizações — dispersão, barras e boxplots — foi possível perceber como escolhas estéticas, mapeamentos, escalas e temas influenciam diretamente a clareza e a precisão da comunicação visual. Além disso, a personalização dos gráficos demonstrou o papel essencial da visualização na análise exploratória, permitindo identificar padrões, distribuições, tendências e variações que não seriam facilmente perceptíveis apenas por tabelas numéricas.

Dessa forma, o conjunto das práticas realizadas contribuiu para o desenvolvimento de habilidades fundamentais no contexto da Ciência de Dados, aprimorando a capacidade de transformar dados brutos em informações visuais significativas, mais acessíveis e úteis para processos decisórios.