Home

row 01

Identificação do discente:
Aluno: Luiz Felipe Alves Ferreira
CPF: 065.xxx.xxx-80
Email:
Unidade: 47º BPM / 4ª RPM

row 02

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

Exercicio 1_1

row 01

Gráfico de Dispersão mtcars:

Exercicio 1_2

row 01

Gráfico de Barras diamonds:

Exercicio 1_3

row 01

Gráfico Bloxplot diamonds:

Exercicio 1_4

row 01

Questão 01: Explique a diferença entre os geoms geom point() e geom jitter(). Em que situação cada um é mais apropriado?

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.

row 02

Questão 02: Descreva o conceito de ”Gramática dos Gráficos”e como ele é implementado no ggplot2.

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

Homicidios em MG

row 01

Gráfico de barras / Homicídios MG

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

```