Logomarca

Introdução

Este relatório apresenta análises visuais utilizando a biblioteca ggplot2 do R, demonstrando diferentes tipos de gráficos e customizações.

Instalação e Carregamento de Pacotes

# Primeiro, instalamos os pacotes necessários (só precisa fazer uma vez)
# Descomente as linhas abaixo se for a primeira vez: 
# install.packages("ggplot2")
# install.packages("dplyr")
# install.packages("scales")

# Carregando os pacotes
library(ggplot2)  # Para criar gráficos
library(dplyr)    # Para manipulação de dados
library(scales)   # Para formatação de números

Exercício 1.1 - Introdução ao ggplot2

Scatter Plot: Peso vs Consumo de Combustível

Neste exercício, utilizamos o dataset mtcars para criar um gráfico de dispersão que mostra a relação entre o peso do carro (wt) e o consumo de combustível (mpg).

# Carregando o dataset mtcars (já vem instalado no R)
data(mtcars)

# Convertendo 'cyl' para fator (categoria) para as cores funcionarem corretamente
mtcars$cyl <- as.factor(mtcars$cyl)

# Criando o gráfico de dispersão
ggplot(data = mtcars) +
  aes(x = wt, y = mpg, color = cyl) +
  geom_point(size = 3) +
  labs(
    title = "Relação entre Peso e Consumo de Combustível",
    x = "Peso do Carro (1000 lbs)",
    y = "Consumo (Milhas por Galão)",
    color = "Cilindros"
  ) +
  theme_minimal()

Interpretação:

Observamos uma correlação negativa entre peso e consumo: carros mais pesados tendem a consumir mais combustível (menos milhas por galão). Além disso, carros com mais cilindros são geralmente mais pesados e menos econômicos.


Exercício 1.2 - Gráficos de Barras

Contagem de Diamantes por Corte

Utilizamos o dataset diamonds para visualizar a distribuição de diamantes por qualidade de corte.

# Carregando o dataset diamonds
data(diamonds)

# Criando uma tabela de contagem ordenada
contagem_cut <- diamonds %>%
  count(cut) %>%
  arrange(desc(n))

# Criando o gráfico de barras
ggplot(data = contagem_cut) +
  aes(x = reorder(cut, -n), y = n, fill = cut) +
  geom_bar(stat = "identity") +
  geom_text(
    aes(label = format(n, big.mark = ".")),
    vjust = -0.5,
    size = 3.5
  ) +
  scale_fill_brewer(palette = "RdYlBu") +
  labs(
    title = "Distribuição de Diamantes por Qualidade de Corte",
    x = "Qualidade do Corte",
    y = "Quantidade de Diamantes",
    fill = "Corte"
  ) +
  theme_minimal() +
  theme(legend.position = "none") +
  ylim(0, max(contagem_cut$n) * 1.1)

Interpretação:

A maioria dos diamantes no dataset possui corte de qualidade “Ideal”, seguido por “Premium”. O corte “Fair” (razoável) é o menos comum.


Exercício 1.3 - Customização Avançada

Boxplot: Preço por Qualidade de Corte

# Criando o boxplot customizado
ggplot(data = diamonds) +
  aes(x = cut, y = price, fill = cut) +
  geom_boxplot() +
  scale_fill_manual(
    values = c(
      "Fair" = "#E74C3C",
      "Good" = "#F39C12", 
      "Very Good" = "#27AE60",
      "Premium" = "#3498DB",
      "Ideal" = "#9B59B6"
    )
  ) +
  labs(
    title = "Distribuição de Preços por Qualidade de Corte",
    subtitle = "Dataset:  diamonds",
    x = "Qualidade do Corte",
    y = "Preço (USD)"
  ) +
  scale_y_continuous(labels = dollar_format(prefix = "$", big.mark = ". ")) +
  theme_minimal() +
  theme(
    legend.position = "none",
    axis.text.x = element_text(angle = 45, hjust = 1, size = 10),
    plot.title = element_text(face = "bold", size = 14),
    plot.subtitle = element_text(color = "gray50")
  )

Interpretação:

Curiosamente, diamantes com corte “Fair” (menor qualidade) apresentam mediana de preço semelhante ou até superior aos demais. Isso pode indicar que outros fatores (como quilates) influenciam mais o preço do que a qualidade do corte.


Exercício 1.4 - Conceitos Fundamentais

Questão 1: Diferença entre geom_point() e geom_jitter()

geom_point()

  • Plota os pontos exatamente nas coordenadas especificadas
  • Quando usar: Quando os dados são contínuos e não há muita sobreposição de pontos

geom_jitter()

  • Adiciona um pequeno ruído aleatório às posições dos pontos
  • Quando usar: Quando há muitos pontos sobrepostos (especialmente com variáveis discretas/categóricas)

Exemplo Comparativo:

# Dados para demonstração
set.seed(42)
dados_exemplo <- data.frame(
  categoria = rep(c("A", "B", "C"), each = 50),
  valor = rnorm(150, mean = 10, sd = 2)
)

# Gráfico com geom_point()
p1 <- ggplot(dados_exemplo, aes(x = categoria, y = valor)) +
  geom_point(color = "blue", alpha = 0.5) +
  labs(title = "geom_point()", subtitle = "Pontos sobrepostos") +
  theme_minimal()

# Gráfico com geom_jitter()
p2 <- ggplot(dados_exemplo, aes(x = categoria, y = valor)) +
  geom_jitter(color = "red", alpha = 0.5, width = 0.2) +
  labs(title = "geom_jitter()", subtitle = "Pontos dispersos") +
  theme_minimal()

# Exibindo lado a lado
library(gridExtra)
grid.arrange(p1, p2, ncol = 2)


Questão 2: Gramática dos Gráficos (Grammar of Graphics)

A Gramática dos Gráficos é um conceito desenvolvido por Leland Wilkinson que descreve gráficos estatísticos como uma combinação de componentes independentes e modulares.

Componentes Principais:

Componente Descrição Exemplo no ggplot2
Data Os dados a serem visualizados ggplot(data = mtcars)
Aesthetics Mapeamento visual (posição, cor, tamanho) aes(x = wt, y = mpg, color = cyl)
Geometries Formas geométricas que representam os dados geom_point(), geom_bar()
Facets Divisão em subgráficos facet_wrap(~cyl)
Statistics Transformações estatísticas stat_smooth()
Coordinates Sistema de coordenadas coord_flip()
Theme Aparência visual theme_minimal()

Implementação no ggplot2:

O ggplot2 implementa essa gramática usando o operador + para adicionar camadas ao gráfico:

ggplot(data) +        # Dados
  aes(... ) +          # Estética
  geom_xxx() +        # Geometria
  scale_xxx() +       # Escalas
  theme_xxx()         # Tema

Vantagem:

Essa abordagem modular permite criar gráficos complexos de forma sistemática e reprodutível, combinando componentes simples como blocos de construção.


Conclusão

Este relatório demonstrou as principais funcionalidades do ggplot2 para visualização de dados em R:

  1. Scatter plots para relações entre variáveis contínuas
  2. Gráficos de barras para dados categóricos
  3. Boxplots para distribuições
  4. Customizações de cores, temas e rótulos

A Gramática dos Gráficos oferece uma estrutura poderosa e flexível para criar visualizações informativas e esteticamente agradáveis.


Relatório gerado em 2025-12-15