Este relatório apresenta uma análise exploratória de dados utilizando visualizações gráficas avançadas com ggplot2.
O documento está organizado em três capítulos principais:
Demonstrar técnicas de visualização de dados e boas práticas na criação de relatórios analíticos.
Data do Relatório: 18/12/2025
| Dataset | Observações | Variáveis |
|---|---|---|
| mtcars | 32 | Múltiplas |
| diamonds | 53940 | Múltiplas |
Observações:
| Métrica | Valor |
|---|---|
| Média MPG | 20.09 |
| Mediana MPG | 19.20 |
| Peso Médio | 3.22 |
Principais Achados:
| Tipo de Corte | Quantidade |
|---|---|
| Ideal | 21551 |
| Premium | 13791 |
| Very Good | 12082 |
| Good | 4906 |
| Fair | 1610 |
Conclusões:
| Tipo de Corte | Preço Médio (USD) |
|---|---|
| Fair | 4358.76 |
| Good | 3928.86 |
| Very Good | 3981.76 |
| Premium | 4584.26 |
| Ideal | 3457.54 |
Nota: Outros fatores como quilates (carat), claridade (clarity) e cor (color) também influenciam significativamente o preço dos diamantes.
geom_point() desenha os pontos exatamente nas coordenadas fornecidas (x, y). É o “scatter plot padrão” do ggplot2.
geom_jitter() também desenha pontos, mas aplica um pequeno deslocamento aleatório (“jitter”) nas posições em x, em y, ou em ambos. Esse deslocamento é proposital: serve para revelar sobreposição (muitos pontos iguais empilhados).
A Gramática dos Gráficos (Grammar of Graphics) é uma forma de pensar gráficos como uma linguagem composta por partes, em vez de “tipos prontos” (gráfico de barras, pizza, etc.).
A ideia central é: um gráfico é construído combinando componentes que descrevem como os dados viram elementos visuais.
---
title: "Relatório de Análise de Dados"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
logo: logo.png
theme: cosmo
source_code: embed
---
```{r setup, include=FALSE}
# Carregar bibliotecas necessárias
library(flexdashboard)
library(ggplot2)
# Carregar os datasets
data(mtcars)
data(diamonds)
```
# Introdução {data-icon="fa-home"}
## Column {data-width=650}
### Sobre Este Relatório
Este relatório apresenta uma análise exploratória de dados utilizando visualizações gráficas avançadas com **ggplot2**.
O documento está organizado em três capítulos principais:
1. **Análise de Veículos**: Relação entre peso e consumo de combustível
2. **Análise de Diamantes - Contagem**: Distribuição de diamantes por tipo de corte
3. **Análise de Diamantes - Preços**: Variação de preços por qualidade de corte
#### Datasets Utilizados:
- **mtcars**: Dados de veículos automóveis (32 modelos)
- **diamonds**: Dados de aproximadamente 54.000 diamantes
#### Objetivo:
Demonstrar técnicas de visualização de dados e boas práticas na criação de relatórios analíticos.
---
**Data do Relatório**: `r format(Sys.Date(), "%d/%m/%Y")`
## Column {data-width=350}
### Resumo dos Datasets
```{r}
# Criar tabela resumo
resumo <- data.frame(
Dataset = c("mtcars", "diamonds"),
Observações = c(nrow(mtcars), nrow(diamonds)),
Variáveis = "Múltiplas"
)
knitr::kable(resumo, align = "c")
```
### Tecnologias Utilizadas
- **R**: Linguagem de programação estatística
- **ggplot2**: Criação de gráficos
- **flexdashboard**: Framework para dashboards
- **RMarkdown**: Documentação reproduzível
# Análise de Veículos {data-icon="fa-car"}
## Column {data-width=700}
### Relação entre Peso e Consumo de Combustível
```{r}
# Exercício 1.1 - Gráfico de dispersão
ggplot(data = 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 Carro (1000 lbs)",
y = "Consumo (Milhas por Galão)",
color = "Número de Cilindros"
) +
theme_minimal()
```
## Column {data-width=300}
### Insights Principais
**Observações:**
- Existe uma relação **inversa** entre peso e consumo
- Carros mais pesados tendem a consumir mais combustível
- Veículos com mais cilindros são geralmente mais pesados
### Estatísticas Descritivas
```{r}
# Estatísticas do consumo
stats <- data.frame(
Métrica = c("Média MPG", "Mediana MPG", "Peso Médio"),
Valor = c(
round(mean(mtcars$mpg), 2),
round(median(mtcars$mpg), 2),
round(mean(mtcars$wt), 2)
)
)
knitr::kable(stats, align = "lr")
```
# Diamantes - Contagem {data-icon="fa-gem"}
## Column {data-width=700}
### Contagem de Diamantes por Tipo de Corte
```{r}
# Exercício 1.2 - Gráfico de barras
ggplot(data = diamonds) +
aes(x = reorder(cut, cut, function(x) -length(x)), fill = cut) +
geom_bar() +
geom_text(
stat = "count",
aes(label = after_stat(count)),
vjust = -0.5,
size = 4
) +
labs(
title = "Contagem de Diamantes por Tipo de Corte",
x = "Tipo de Corte",
y = "Contagem",
fill = "Corte"
) +
scale_fill_brewer(palette = "RdYlBu") +
theme_minimal() +
theme(
axis.text.x = element_text(angle = 0, hjust = 0.5)
)
```
## Column {data-width=300}
### Análise de Distribuição
**Principais Achados:**
- A categoria **Ideal** possui a maior quantidade de diamantes
- Cortes de maior qualidade são mais comuns no dataset
- A distribuição não é uniforme entre as categorias
### Tabela de Contagem
```{r}
# Criar tabela de contagem
contagem <- as.data.frame(table(diamonds$cut))
colnames(contagem) <- c("Tipo de Corte", "Quantidade")
contagem <- contagem[order(-contagem$Quantidade), ]
knitr::kable(contagem, align = "lr", row.names = FALSE)
```
# Diamantes - Preços {data-icon="fa-dollar-sign"}
## Column {data-width=700}
### Distribuição de Preço por Tipo de Corte
```{r}
# Exercício 1.3 - Boxplot customizado
ggplot(data = diamonds) +
aes(x = cut, y = price, fill = cut) +
geom_boxplot() +
labs(
title = "Distribuição de Preço por Tipo de Corte",
subtitle = "Análise de diamantes",
x = "Tipo de Corte",
y = "Preço (USD)"
) +
scale_fill_manual(
values = c(
"Fair" = "#E74C3C",
"Good" = "#F39C12",
"Very Good" = "#F1C40F",
"Premium" = "#3498DB",
"Ideal" = "#2ECC71"
)
) +
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(size = 10, color = "gray40")
)
```
## Column {data-width=300}
### Interpretação dos Resultados
**Conclusões:**
- Grande variabilidade de preços em todas as categorias
- Presença de **outliers** (valores extremos) em todos os grupos
- A qualidade do corte não é o único fator determinante do preço
### Estatísticas de Preço
```{r}
# Estatísticas por tipo de corte
stats_price <- aggregate(price ~ cut, data = diamonds,
FUN = function(x) round(mean(x), 2))
colnames(stats_price) <- c("Tipo de Corte", "Preço Médio (USD)")
knitr::kable(stats_price, align = "lr", row.names = FALSE)
```
### Observação Importante
> **Nota**: Outros fatores como quilates (carat), claridade (clarity) e cor (color) também influenciam significativamente o preço dos diamantes.
# Questões ggplot2 {data-icon="fa-question-circle"}
## Column {data-width=600}
### 1) Diferença entre geom_point() e geom_jitter()
**geom_point()** desenha os pontos exatamente nas coordenadas fornecidas (x, y). É o "scatter plot padrão" do ggplot2.
**geom_jitter()** também desenha pontos, mas aplica um pequeno deslocamento aleatório ("jitter") nas posições em x, em y, ou em ambos. Esse deslocamento é proposital: serve para revelar sobreposição (muitos pontos iguais empilhados).
## Column {data-width=400}
### 2) Conceito de "Gramática dos Gráficos" no ggplot2
A **Gramática dos Gráficos** (Grammar of Graphics) é uma forma de pensar gráficos como uma linguagem composta por partes, em vez de "tipos prontos" (gráfico de barras, pizza, etc.).
A ideia central é: **um gráfico é construído combinando componentes que descrevem como os dados viram elementos visuais.**
#### No ggplot2, você monta o gráfico por camadas ("layers")