Polícia Militar de Minas Gerais
1.1 Introdução ao ggplot2
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
ggplot(mtcars, aes(x=wt, y=mpg, color=factor(cyl)))+geom_point() +
labs(title="Relação entre peso e consumo de combustível",
x="Peso do carro",
y="Milhas por Galão",
color="Cilindros") +
theme_minimal()

1.2 Gráficos de Barras
head(diamonds)
## # A tibble: 6 × 10
## carat cut color clarity depth table price x y z
## <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
## 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
## 3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
## 4 0.29 Premium I VS2 62.4 58 334 4.2 4.23 2.63
## 5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75
## 6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48
ggplot(diamonds, aes(x=fct_infreq(cut), fill=cut)) + geom_bar() +
geom_text(stat="count",
aes(label=after_stat(count)),
vjust = -0.5,
size = 4,
color = "black") +
scale_fill_brewer(palette = "RdBu", direction = -1) +
labs(title = "Contagem de diamantes por tipo de corte",
x = "Corte",
y = "Contagem de diamantes",
fill = "Corte") +
theme_minimal()

1.3 Customização Avançada
ggplot(diamonds, aes(x=cut, y=price, fill=cut)) + geom_boxplot(alpha=0.7) +
scale_fill_brewer(palette="Set3") +
labs(title="Relação do preço dos diamantes por corte",
x="Tipo de corte",
y="Preço") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
guides(fill="none")

1.4 Conceitos Fundamentais
Questão 1: Explique a diferença entre os geoms: geom_point() e
geom_jitter(). Em que situação cada um é mais apropriado?
A função geom_point() cria os pontos que são transformados em bolhas, onde o tamanho de cada bolha é determinado por uma variável numérica, permitindo visualizar três dimensões de dados simultaneamente. Contudo, pode ocorrer de pontos sobrepostos se esconderem uns dos outros, levando a perda de informação. Como só se vê um único ponto, ele pode representar várias informações.
A função geom_jitter() é essencialmente uma variação do geom_point(). Contudo, o geom_jitter() plota pontos individuais em um gráfico, aplicando uma pequena quantidade de ruído aleatório (ou "jitter") nas coordenadas de cada ponto. Ao aplicar o ruído, os pontos se espalham ligeiramente em torno de suas posições verdadeiras. Isso revela a densidade real dos dados e a distribuição de pontos em cada categoria, resolvendo o problema da sobreposição.
O geom_point() é mais apropriado em gráficos de dispersão clássicos, de séries temporais ou onde o total de observações é um número baixo. Já o geom_jitter() é melhor usado em gráficos onde muitos pontos de sobreporiam em uma linha vertical, revelando a densidade.
Questão 2: Descreva o conceito de “Gramática dos Gráficos” e
como ele é implementado no ggplot2.
Gramática dos gráficos é a associação de cada componente de um gráfico a uma estrutura gramatical, semelhante à formação de uma frase. Isso possibilita a elaboração de diversos gráficos de forma mais eficiente e estruturada.
No ggplot2, os gráficos são montados por meio de camadas (ou linhas) e atribuem-se aos dados características estéticas (como tamanho, cor e opacidade), formas geométricas (como barras, linhas e pontos) e outros elementos visuais (escalas, temas e legendas). Dessa maneira, a combinação de todas as camadas resulta no gráfico final.