Questão 1: Diferença entre geom_point() e
geom_jitter():
O geom_point() plota os pontos exatamente nas coordenadas
dos dados. Já o geom_jitter() adiciona um pequeno ruído
aleatório à posição dos pontos, útil quando há sobreposição
(overplotting), pois melhora a visualização da
densidade/distribuição.
Questão 2: Gramática dos Gráficos:
A Gramática dos Gráficos é um framework para construir visualizações por
camadas: dados, mapeamentos estéticos,
geometrias, escalas,
coordenadas e facetas. No
ggplot2, as camadas são combinadas com o operador
+.
---
title: "Prova Final da disciplina Visualização de Dados"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
source_code: embed
---
```{=html}
<style>
@import url('https://fonts.googleapis.com/css2?family=Teko:wght@600;700&display=swap');
:root{
--caqui:#a08f63;
--preto:#373435;
--branco:#FEFEFE;
--vermelho:#AB2328;
--gelo:#EAE7DE;
--caqui-claro:#D1C9B5;
}
body{
font-family: Arial, sans-serif;
color: var(--preto);
}
.pmmg-header{
background: var(--branco);
border: 2px solid var(--caqui);
border-radius: 14px;
padding: 16px 18px;
margin: 18px 0 22px 0;
box-shadow: 0 2px 10px rgba(0,0,0,.06);
}
.pmmg-header-top{
display: flex;
align-items: center;
gap: 18px;
flex-wrap: wrap;
}
.pmmg-escudo{
width: 320px;
max-width: 100%;
height: auto;
display: block;
}
.pmmg-titles{
flex: 1;
min-width: 280px;
line-height: 1.15;
}
.pmmg-org{
font-family: 'Teko', Arial, sans-serif;
font-size: 34px;
font-weight: 700;
letter-spacing: .4px;
margin: 0;
color: var(--preto);
}
.pmmg-sub{
font-size: 16px;
margin: 4px 0 0 0;
color: var(--preto);
}
.pmmg-meta{
margin-top: 10px;
background: var(--gelo);
border-left: 6px solid var(--vermelho);
padding: 10px 12px;
border-radius: 10px;
font-weight: 600;
}
</style>
<div class="pmmg-header">
<div class="pmmg-header-top">
<img class="pmmg-escudo" src="https://i.ibb.co/cSWsGX2k/TOPO.png" alt="Topo PMMG">
<div class="pmmg-titles">
<div class="pmmg-org">Décima Primeira Região da Polícia Militar</div>
<div class="pmmg-sub">Estado-Maior da 11ª Região da Polícia Militar</div>
<div class="pmmg-meta">Discente: Frederico Borges Evangelista</div>
</div>
</div>
</div>
```
```{r setup, include=FALSE}
knitr::opts_chunk$set(
echo = FALSE,
warning = FALSE,
message = FALSE,
fig.width = 12,
fig.height = 7,
fig.align = "center",
out.width = "100%",
dpi = 160
)
library(ggplot2)
library(dplyr)
# Paleta (Manual de Identidade Visual / PMMG + variações do Escudo)
pmmg_caqui <- "#a08f63"
pmmg_preto <- "#373435"
pmmg_branco <- "#FEFEFE"
pmmg_vermelho <- "#AB2328"
pmmg_caqui_claro <- "#D1C9B5"
pmmg_gelo <- "#EAE7DE"
paleta_cut <- c(
"Fair" = pmmg_preto,
"Good" = pmmg_caqui,
"Very Good" = pmmg_caqui_claro,
"Premium" = pmmg_vermelho,
"Ideal" = pmmg_gelo
)
theme_pmmg <- function() {
theme_minimal(base_family = "sans", base_size = 12) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 16, color = pmmg_preto),
axis.title = element_text(face = "bold", color = pmmg_preto),
axis.text = element_text(color = pmmg_preto),
panel.grid.minor = element_blank(),
panel.grid.major.x = element_blank(),
legend.title = element_text(face = "bold", color = pmmg_preto),
legend.text = element_text(color = pmmg_preto)
)
}
theme_set(theme_pmmg())
```
Row {data-height=780}
-----------------------------------------------------------------------
### Exercício 1.1 — Gráfico de Dispersão
```{r exercicio1}
mtcars$cyl <- as.factor(mtcars$cyl)
ggplot(mtcars, aes(x = wt, y = mpg, color = cyl)) +
geom_point(size = 3.6, alpha = 0.85) +
scale_color_manual(values = c("4" = pmmg_preto, "6" = pmmg_vermelho, "8" = pmmg_caqui)) +
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"
)
```
Row {data-height=780}
-----------------------------------------------------------------------
### Exercício 1.2 — Gráfico de Barras
```{r exercicio2}
dados_barras <- diamonds %>%
count(cut, name = "n") %>%
arrange(desc(n))
ggplot(dados_barras, aes(x = reorder(cut, -n), y = n, fill = cut)) +
geom_col(width = 0.78) +
geom_text(aes(label = n), vjust = -0.4, size = 4, color = pmmg_preto) +
scale_fill_manual(values = paleta_cut) +
labs(
title = "Contagem de Diamantes por Corte",
x = "Tipo de Corte",
y = "Quantidade"
) +
theme(legend.position = "none")
```
Row {data-height=780}
-----------------------------------------------------------------------
### Exercício 1.3 — Boxplot Customizado
```{r exercicio3}
ggplot(diamonds, aes(x = cut, y = price, fill = cut)) +
geom_boxplot(outlier.alpha = 0.20) +
scale_fill_manual(values = paleta_cut) +
labs(
title = "Distribuição de Preço por Corte de Diamante",
x = "Corte",
y = "Preço (USD)"
) +
theme(
axis.text.x = element_text(angle = 35, hjust = 1),
legend.position = "none"
)
```
Row
-----------------------------------------------------------------------
### Exercício 1.4 — Conceitos Fundamentais
**Questão 1: Diferença entre `geom_point()` e `geom_jitter()`:**
O `geom_point()` plota os pontos exatamente nas coordenadas dos dados. Já o `geom_jitter()` adiciona um pequeno ruído aleatório à posição dos pontos, útil quando há sobreposição (overplotting), pois melhora a visualização da densidade/distribuição.
**Questão 2: Gramática dos Gráficos:**
A Gramática dos Gráficos é um framework para construir visualizações por camadas: **dados**, **mapeamentos estéticos**, **geometrias**, **escalas**, **coordenadas** e **facetas**. No `ggplot2`, as camadas são combinadas com o operador `+`.