Introdução

Column

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: 18/12/2025

Column

Resumo dos Datasets

Dataset Observações Variáveis
mtcars 32 Múltiplas
diamonds 53940 Múltiplas

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

Column

Relação entre Peso e Consumo de Combustível

Column

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

Métrica Valor
Média MPG 20.09
Mediana MPG 19.20
Peso Médio 3.22

Diamantes - Contagem

Column

Contagem de Diamantes por Tipo de Corte

Column

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

Tipo de Corte Quantidade
Ideal 21551
Premium 13791
Very Good 12082
Good 4906
Fair 1610

Diamantes - Preços

Column

Distribuição de Preço por Tipo de Corte

Column

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

Tipo de Corte Preço Médio (USD)
Fair 4358.76
Good 3928.86
Very Good 3981.76
Premium 4584.26
Ideal 3457.54

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

Column

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

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”)

---
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")