Identificação do
discente:
Aluno: Luiz Felipe Alves
Ferreira
CPF: 065.xxx.xxx-80
Email: krypyto@gmail.com
Unidade: 47º BPM / 4ª
RPM
Apresentação do
conteúdo:
O presente
trabalho destina-se a obtenção parcial de nota na disciplina de
Visualização de Dados.
A seguir serão apresentados os
gráficos relativos aos exercícios 01 e 02.
Você poderá
navegar através do sumário que está na lateral da página ou através das
abas que se encontram no topo da tela, na barra de navegação.
Foi adicionado o botão Souce Code na parte
superior direita para a visualização do Código-fonte
Resposta:
A função geom_point() plota os pontos exatamente nas coordenadas (x,y) especificadas, conforme estão descritas nas tabelas ou bancos de dados, sem fazer nenhuma alteração nos valores. É apropirado quando se deseja visualizar a relação entre duas variáveis contínuas, como em gráficos de dispersão, auando não há muitos pontos sobrepostos, ou quando a precisão da posição é crucial para a representação gráfica.
A função geom_jitter() adiciona um ruído aleatório pequeno aos pontos, espalhando-os para revelar a densidade e evitar a sobreposição. É apropriado para dados com valores discretos ou que apresentam pequenas variações, como em gráficos de dispersão com dados categóricos. Também pode ser utilizado quando se trabalha com grandes conjuntos de dados ou com dados de baixa precisão, como por exemplo quando se arredonda a variável idade para inteiro.
Resposta:
Gramática dos Gráfocps pode ser entidida com uma combinações de camadas de componentes (sete no total), permitindo criar visualizações complexas de forma modular e declarativa. O ggplot2 implementa essa ideia na linguagem R, construindo gráficos camada por camada usando o operador + ao final de cada camada para que esta se sobreponha a camada anterior. O sistema conceitual decompõe um gráfico em partes 07 fundamentais: - Dados (data = ) ; - Mapeamento Estético (aes()) ; - Geometrias (geom_()) ; - Faceta (facet_()) ; - Estatísticas (stat_()) ; - Escalas ; - Temas (theme_minimal())
---
title: "Prova Final"
output:
flexdashboard::flex_dashboard:
theme: united
orientation: rows
vertical_layout: fill
source_code: embed
---
```{r setup, include=FALSE}
setwd("~/Pos_Graduacao/Visualizacao_Dados/")
library(flexdashboard)
library(tidyverse)
library(plotly)
homicidios_df <- read_csv2("https://www.seguranca.mg.gov.br/images/0_planilhas-e-pdfs/transparencia/Dados%20Abertos%20-%202025/10.2025/Banco%20Vtimas%20de%20Homicdio%20Consumado%20Outubro%202025.csv")
```
# Side Bar{.sidebar data-width=200}
<font size="5" color="darkred">**Bem vindo ao Dashboard!**</font>
<font size="3">Navegue pelas seções:</font>
<font size="3">Página Inicial:</font>
- [Home](#home)
<font size="3">Exercício 01:</font>
- [Exercício 1.1](#exercicio-1_1)
- [Exercício 1.2](#exercicio-1_2)
- [Exercício 1.3](#exercicio-1_3)
- [Exercício 1.4](#exercicio-1_4)
<font size="3">Exercício 02:</font>
- [Homicídios em MG](#homicidios-em-mg)
# Home
## row 01 {data-height=300 }
### {data-width=700}
<font size="6" color="darkred">**Identificação do discente:**</font><br />
<font size="4">
Aluno: Luiz Felipe Alves Ferreira<br />
CPF: 065.xxx.xxx-80<br />
Email: krypyto@gmail.com<br />
Unidade: 47º BPM / 4ª RPM<br />
</font>
### {data-width=300}
```{r picture, echo = F, out.width = '100%'}
knitr::include_graphics("https://intranet.policiamilitar.mg.gov.br/conteudoportal/uploadFCK/47bpm/08102020143106747.png")
```
## row 02 {data-height=700 }
### {data-width=1000}
<font size="6" color="darkred">**Apresentação do conteúdo:**</font>
<br />
<br />
<font size="4">
O presente trabalho destina-se a obtenção parcial de nota na disciplina de
Visualização de Dados.
<br />
<br />
A seguir serão apresentados os gráficos relativos aos exercícios 01 e 02.
<br />
<br />
Você poderá navegar através do sumário que está na lateral da página ou através
das abas que se encontram no topo da tela, na barra de navegação.
<br />
<br />
Foi adicionado o botão **Souce Code** na parte superior direita para a visualização do Código-fonte
</font>
# Exercicio 1_1 {data-navmenu="Exercício - 01"}
## row 01 {data-height=1000 }
### <font size="4" color="darkred">**Gráfico de Dispersão mtcars:**</font>
```{r}
df_mtcars <- mtcars
df_mtcars <- df_mtcars %>% mutate(cilindros = as.factor(df_mtcars$cyl))
g1 <- ggplot(data = df_mtcars) +
geom_point(aes(x = wt, y = mpg, color = cilindros)) +
labs(title = "Relação entre Peso e Consumo de Combustível",
x = "Consumo - (Miles/(US) gallon)",
y = "Peso - (1000 libras)",
color = "Cilindros") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
plot(g1)
```
# Exercicio 1_2 {data-navmenu="Exercício - 01"}
## row 01 {data-height=1000 }
### <font size="4" color="darkred">**Gráfico de Barras diamonds:**</font>
```{r}
df_diamonds <- diamonds
g2 <- ggplot(data = df_diamonds, aes( x = fct_infreq(cut), fill = cut)) +
geom_bar() +
scale_fill_brewer(palette = "Spectral", type = "div") +
geom_text(aes(label = after_stat(count)), stat = "count", vjust=-0.5, size=3) +
labs(title = "Relação entre Tipo de corte e Quantidade",
x = "Tipo de corte",
y = "Quantidade de amostras",
fill = "Tipo de corte") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
plot(g2)
```
# Exercicio 1_3 {data-navmenu="Exercício - 01"}
## row 01 {data-height=1000 }
### <font size="4" color="darkred">**Gráfico Bloxplot diamonds:**</font>
```{r}
df_diamonds <- diamonds
g3 <- ggplot(data = df_diamonds) +
geom_boxplot(aes(x = cut, y = price, fill = cut), staplewidth = 0.5) +
scale_fill_brewer(palette = "Accent") +
labs(title = "Relação entre Tipo de corte e Preço",
x = "Tipo de corte",
y = "Preço em dólares (US$)",
fill = "Tipo de corte") +
scale_x_discrete(labels = c("Fair" = "Razoável" ,
"Good" = "Bom",
"Very Good" = "Muito Bom",
"Premium" = "Premium",
"Ideal" = "Excelente")) + # Rótulos específicos
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5),
legend.position = "none",
axis.text.x = element_text(angle = 45, hjust = 1))
plot(g3)
```
# Exercicio 1_4 {data-navmenu="Exercício - 01"}
## row 01 {data-height=500 }
### <font size="3" color="darkred">**Questão 01:** Explique a diferença entre os geoms geom point() e geom jitter(). Em que situação cada um é mais apropriado?</font>
<font size="3">**Resposta:**
A função **geom_point()** plota os pontos exatamente nas coordenadas (x,y) especificadas, conforme estão descritas nas tabelas ou bancos de dados, sem fazer nenhuma alteração nos valores. É apropirado quando se deseja visualizar a relação entre duas variáveis contínuas, como em gráficos de dispersão, auando não há muitos pontos sobrepostos, ou quando a precisão da posição é crucial para a representação gráfica.
A função **geom_jitter()** adiciona um ruído aleatório pequeno aos pontos, espalhando-os para revelar a densidade e evitar a sobreposição. É apropriado para dados com valores discretos ou que apresentam pequenas variações, como em gráficos de dispersão com dados categóricos. Também pode ser utilizado quando se trabalha com grandes conjuntos de dados ou com dados de baixa precisão, como por exemplo quando se arredonda a variável idade para inteiro.
</font>
## row 02 {data-height=500 }
### <font size="3" color="darkred">**Questão 02:** Descreva o conceito de ”Gramática dos Gráficos”e como ele é implementado no ggplot2.</font>
<font size="3">**Resposta:**
Gramática dos Gráfocps pode ser entidida com uma combinações de camadas de componentes (sete no total), permitindo criar visualizações complexas de forma modular e declarativa. O ggplot2 implementa essa ideia na linguagem R, construindo gráficos camada por camada usando o operador **+** ao final de cada camada para que esta se sobreponha a camada anterior. O sistema conceitual decompõe um gráfico em partes 07 fundamentais:
- Dados (data = ) ; - Mapeamento Estético (aes()) ; - Geometrias (geom_()) ; - Faceta (facet_()) ; - Estatísticas (stat_()) ; - Escalas ; - Temas (theme_minimal())
</font>
# Homicidios em MG {data-navmenu="Exercício - 02"}
## row 01 {data-height=1000 }
### <font size="4" color="darkred">**Gráfico de barras / Homicídios MG**</font>
```{r}
homicidios_df1 <- homicidios_df %>% filter(Registros != 0 & Ano %in% c(2021, 2022, 2023, 2024, 2025))
homicidios_ano <- homicidios_df1 %>%
mutate(ano = as.factor(Ano)) %>% # Converte o Ano(num) para ano(factor)
group_by(ano) %>% # Agrupa os dados por ano
summarise(total_homicidios = sum(Registros, na.rm = TRUE)) %>% # Soma os valores dentro de cada grupo
ungroup() # Remove o agrupamento após a soma
# Criar o gráfico de barras
g5 <- plot_ly(
data = homicidios_ano,
x = ~ano,
y = ~total_homicidios,
type = 'bar',
name = ~ano, # Define o nome das Legendas
text = ~total_homicidios, # Usa os valores como texto
textposition = 'outside' # Posiciona o texto automaticamente nas barras
) %>%
layout( # Personaliza o layout (títulos, modo de barras, legenda)
title = "Total de Homicídios por ano em MG", # Título do gráfico
xaxis = list(title = "Ano de Referência"), # Rótulo do eixo X
yaxis = list(title = "Total de Homicídios", range = c(0, 3000)), # Rótulo do eixo Y
legend = list(title = list(text = "Ano"), x = 1, y = 0.5) # Coloca o título e Posiciona a legenda
)
ggplotly(g5)
```