Este relatório apresenta análises visuais utilizando a biblioteca ggplot2 do R, demonstrando diferentes tipos de gráficos e customizações.
# 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
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()
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.
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)
A maioria dos diamantes no dataset possui corte de qualidade “Ideal”, seguido por “Premium”. O corte “Fair” (razoável) é o menos comum.
# 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")
)
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.
geom_point() e
geom_jitter()geom_point()geom_jitter()# 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)
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.
| 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() |
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
Essa abordagem modular permite criar gráficos complexos de forma sistemática e reprodutível, combinando componentes simples como blocos de construção.
Este relatório demonstrou as principais funcionalidades do ggplot2 para visualização de dados em R:
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