Bem-vindo ao painel. Utilize o menu lateral para navegar.
O Gráfico de Dispersão gerado revela
uma forte correlação negativa entre o peso do veículo
(wt) e a Milhas por Galão (mpg). Isso
significa que, invariavelmente, veículos mais pesados tendem a ter uma
eficiência de combustível significativamente menor.
Observações Segmentadas por Cilindros
(cyl):
Conclusão: O número de cilindros atua como um forte fator de estratificação. Para otimizar a eficiência de combustível, a redução no peso, especialmente na transição para um menor número de cilindros, é a alavanca mais eficaz.
# O código a seguir é a versão fonte original (Chart A) para referência.
# Este chunk tem eval=FALSE, ou seja, ele APENAS exibe o código, não o executa.
# OBJETIVO: Criar um gráfico de dispersão (mpg x wt), cor por cyl, com theme_minimal().
# Criando o gráfico de dispersão conforme as instruções
grafico_1 <- ggplot(data = mtcars) +
# Mapeamento estético: X = peso, Y = milhas/galão, Cor = cilindros
aes(x = wt, y = mpg, color = as.factor(cyl)) +
# Geometria de dispersão (pontos)
geom_point(size = 3) +
# Customização de Títulos e Rótulos
labs(
title = "2.1 Relação entre Peso e Consumo de Combustível",
subtitle = "Aumento de peso (wt) resulta em menor eficiência (mpg).",
x = "Peso (1000 lbs)",
y = "Milhas por Galão (mpg)",
color = "Cilindros"
) +
# Aplicação do tema minimalista
theme_minimal() +
theme(legend.position = "bottom") O gráfico de barras mostra claramente a distribuição da quantidade de
diamantes em relação à qualidade de seu corte (cut).
Ideal domina o dataset com a maior frequência (mais de
20.000 unidades), indicando que a maioria dos diamantes neste conjunto
de dados possui o mais alto padrão de corte.Ideal > Premium > Very Good > Good > Fair)
facilita a visualização imediata do ranking de frequência, seguindo de
perto a percepção de qualidade do corte.Good e, principalmente, Fair, representam uma
fração muito pequena da distribuição total, sugerindo que diamantes de
cortes inferiores são menos comuns no dataset, ou são removidos da
análise de mercado.# Este chunk tem eval=FALSE, ou seja, ele APENAS exibe o código, não o executa.
# Pacotes necessários:
library(ggplot2)
library(dplyr)
library(scales) # Para formatação de números
library(forcats) # Para reordenar fatores
# a) Ordenar as barras em ordem decrescente (pré-processamento)
diamonds_ordered <- diamonds %>%
count(cut) %>%
mutate(cut = fct_reorder(cut, n, .desc = TRUE))
# Criando o gráfico de barras
grafico_barras_1_2 <- ggplot(data = diamonds_ordered, aes(x = cut, y = n, fill = cut)) +
# Geometria de barras (stat="identity" pois a contagem foi pré-calculada)
geom_bar(stat = "identity") +
# b) Adicionar rótulos de valor em cada barra
geom_text(aes(label = scales::comma(n)),
vjust = -0.5, size = 4, fontface = "bold", color = "black") +
# c) Utilizar uma paleta de cores divergente (Brewer 'RdBu')
scale_fill_brewer(palette = "RdBu", guide = "none") +
# Customização de Títulos e Rótulos
labs(
title = "Contagem de Diamantes por Qualidade do Corte",
subtitle = "Barras ordenadas com rótulos e paleta divergente.",
x = "Qualidade do Corte",
y = "Contagem de Diamantes (n)"
) +
# Aplicação do tema
theme_minimal() +
theme(
plot.title = element_text(face = "bold")
)
# Exibindo o gráfico
grafico_barras_1_2data(mtcars)
---
title: "Análise Preditiva do 19º BPM"
author: "3º Sgt Novais"
subtitle: "Layout Focado da Atividade 1"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
source_code: embed
css: style.css
# O logo precisa ser um caminho válido no servidor.
logo: 'C:/Projetos_R/flaskdashboard/imgens/logo_pmmg_25mm.png'
navbar:
- { icon: "fa-whatsapp", href: "https://wa.me/5533999481310", title: "Whatsapp" }
- { icon: "fa-instagram", href: "https://www.instagram.com/valfridonovais/", title: "Instagram" }
- { icon: "fa-github", href: "https://github.com/ValfridoNovais", title: "GitHub" }
---
<script>
$(document).ready(function() {
// Seleciona todos os links da barra de navegação que começam com "http"
// e adiciona o atributo para abrir em nova aba
$('.navbar-nav a[href^="http"]').attr('target', '_blank');
});
</script>
```{r setup, include=FALSE}
# Configuração de ambiente e carregamento de bibliotecas
library(flexdashboard)
library(tidyverse) # Fundamental para manipulação de dados e ggplot2
library(knitr) # Para formatação de tabelas e do relatório
library(scales) # Para formatar rótulos (usado no Ex 1.2)
library(leaflet)
library(crosstalk)
library(plotly)
# Configuração global para evitar quebra de linha longa em chunks de código
knitr::opts_chunk$set(tidy = FALSE, warning = FALSE, message = FALSE)
# Dados do mtcars para o Ex 1.1
data(mtcars)
```
Introdução {#introducao}
=====================================
<!-- CONTEÚDO DA INTRODUÇÃO -->
Bem-vindo ao painel. Utilize o menu lateral para navegar.
Gráfico de Dispersão (Ex 1.1) {#dispersao} {data-navmenu="QUESTÕES GERAIS" data-navmenu-icon="fa-list" data-icon="fa-check"}
=====================================
Column {data-width=350}
-----------------------------------------------------------------------
### **Interpretação da Relação Peso vs. Consumo**
O [Gráfico de Dispersão](#grafico_dispersao) gerado revela uma **forte correlação negativa** entre o peso do veículo (`wt`) e a Milhas por Galão (`mpg`). Isso significa que, invariavelmente, veículos mais pesados tendem a ter uma eficiência de combustível significativamente menor.
**Observações Segmentadas por Cilindros (`cyl`):**
1. **Diferenciação Clara:** Os dados estão perfeitamente agrupados de acordo com o número de cilindros (4, 6 e 8), reforçando que esta é a principal variável de influência na eficiência.
2. **4 Cilindros (Verde):** Correspondem aos veículos mais leves e mais econômicos, com a maior média de MPG.
3. **8 Cilindros (Vermelho):** Correspondem aos veículos mais pesados e menos econômicos, com a menor média de MPG.
**Conclusão:** O número de cilindros atua como um forte fator de estratificação. Para otimizar a eficiência de combustível, a redução no peso, especialmente na transição para um menor número de cilindros, é a alavanca mais eficaz.
Column {data-width=650 .tabset}
-------------------------------------
### Carregamento dos dados (boa prática para código reproduzível) {data-height=700}{#grafico_dispersao}
```{r ex_1_1}
# OBJETIVO: Criar um gráfico de dispersão (mpg x wt), cor por cyl, com theme_minimal().
# Criando o gráfico de dispersão conforme as instruções
grafico_1 <- ggplot(data = mtcars) +
# Mapeamento estético: X = peso, Y = milhas/galão, Cor = cilindros
aes(x = wt, y = mpg, color = as.factor(cyl)) +
# Geometria de dispersão (pontos)
geom_point(size = 3) +
# Customização de Títulos e Rótulos
labs(
title = "2.1 Relação entre Peso e Consumo de Combustível",
subtitle = "Aumento de peso (wt) resulta em menor eficiência (mpg).",
x = "Peso (1000 lbs)",
y = "Milhas por Galão (mpg)",
color = "Cilindros"
) +
# Aplicação do tema minimalista
theme_minimal() +
theme(legend.position = "bottom")
# PLOTANDO O GRÁFICO
grafico_1
```
### Chart C - Código R Fonte {data-height=300}
```{r eval=FALSE, echo=TRUE}
# O código a seguir é a versão fonte original (Chart A) para referência.
# Este chunk tem eval=FALSE, ou seja, ele APENAS exibe o código, não o executa.
# OBJETIVO: Criar um gráfico de dispersão (mpg x wt), cor por cyl, com theme_minimal().
# Criando o gráfico de dispersão conforme as instruções
grafico_1 <- ggplot(data = mtcars) +
# Mapeamento estético: X = peso, Y = milhas/galão, Cor = cilindros
aes(x = wt, y = mpg, color = as.factor(cyl)) +
# Geometria de dispersão (pontos)
geom_point(size = 3) +
# Customização de Títulos e Rótulos
labs(
title = "2.1 Relação entre Peso e Consumo de Combustível",
subtitle = "Aumento de peso (wt) resulta em menor eficiência (mpg).",
x = "Peso (1000 lbs)",
y = "Milhas por Galão (mpg)",
color = "Cilindros"
) +
# Aplicação do tema minimalista
theme_minimal() +
theme(legend.position = "bottom")
```
<!--INICIO DA SEGUNDA PÁGINA DO QUESTÕES GERAIS-->
Gráficos de Barras {#barras} {data-navmenu="QUESTÕES GERAIS" data-navmenu-icon="fa-list" data-icon="fa-check"}
=====================================
Column {data-width=500 }{.tabset}
-----------------------------------------------------------------------
### Atividade A - Visualização do Gráfico
```{r ex_1_2_plot, echo=FALSE, message=FALSE, warning=FALSE}
# **Nota:** Certifique-se de que os pacotes 'ggplot2', 'dplyr', 'scales' e 'forcats' estão instalados e carregados.
if (!requireNamespace("ggplot2", quietly = TRUE)) install.packages("ggplot2")
if (!requireNamespace("dplyr", quietly = TRUE)) install.packages("dplyr")
if (!requireNamespace("scales", quietly = TRUE)) install.packages("scales")
if (!requireNamespace("forcats", quietly = TRUE)) install.packages("forcats")
library(ggplot2)
library(dplyr)
library(scales)
library(forcats)
# 1. Preparação dos dados: contar e (a) ordenar o fator 'cut'
diamonds_ordered <- diamonds %>%
count(cut) %>%
mutate(cut = fct_reorder(cut, n, .desc = TRUE))
# 2. Criando o gráfico de barras
grafico_barras_1_2 <- ggplot(data = diamonds_ordered, aes(x = cut, y = n, fill = cut)) +
# Geometria de barras (stat="identity" pois a contagem foi pré-calculada)
geom_bar(stat = "identity") +
# (b) Adicionar rótulos de valor em cada barra
geom_text(aes(label = comma(n)),
vjust = -0.5, size = 4, fontface = "bold", color = "black") +
# (c) Utilizar uma paleta de cores divergente (Brewer 'RdBu')
scale_fill_brewer(palette = "RdBu", guide = "none") +
# Customização de Títulos e Rótulos
labs(
title = "Contagem de Diamantes por Qualidade do Corte",
subtitle = "Barras ordenadas com rótulos e paleta divergente.",
x = "Qualidade do Corte",
y = "Contagem de Diamantes (n)"
) +
# Aplicação do tema minimalista e ajustes estéticos
theme_minimal() +
theme(
plot.title = element_text(face = "bold")
)
# Exibindo o gráfico
grafico_barras_1_2
```
Column {data-width=500 }{.tabset}
-----------------------------------------------------------------------
### Atividade B - Análise e Interpretação
O gráfico de barras mostra claramente a distribuição da quantidade de diamantes em relação à qualidade de seu corte (`cut`).
1. **Dominância do Corte Ideal:** O corte de qualidade `Ideal` domina o dataset com a maior frequência (mais de 20.000 unidades), indicando que a maioria dos diamantes neste conjunto de dados possui o mais alto padrão de corte.
2. **Ordem de Frequência:** A ordenação decrescente das barras (`Ideal > Premium > Very Good > Good > Fair`) facilita a visualização imediata do ranking de frequência, seguindo de perto a percepção de qualidade do corte.
3. **Cortes de Baixa Qualidade:** Os cortes `Good` e, principalmente, `Fair`, representam uma fração muito pequena da distribuição total, sugerindo que diamantes de cortes inferiores são menos comuns no dataset, ou são removidos da análise de mercado.
### Atividade C - Código Fonte (Referência){attr.source='style="max-height: 350px; overflow-y: auto;"'}
```{r ex_1_2_source, eval=FALSE, echo=TRUE}
# Este chunk tem eval=FALSE, ou seja, ele APENAS exibe o código, não o executa.
# Pacotes necessários:
library(ggplot2)
library(dplyr)
library(scales) # Para formatação de números
library(forcats) # Para reordenar fatores
# a) Ordenar as barras em ordem decrescente (pré-processamento)
diamonds_ordered <- diamonds %>%
count(cut) %>%
mutate(cut = fct_reorder(cut, n, .desc = TRUE))
# Criando o gráfico de barras
grafico_barras_1_2 <- ggplot(data = diamonds_ordered, aes(x = cut, y = n, fill = cut)) +
# Geometria de barras (stat="identity" pois a contagem foi pré-calculada)
geom_bar(stat = "identity") +
# b) Adicionar rótulos de valor em cada barra
geom_text(aes(label = scales::comma(n)),
vjust = -0.5, size = 4, fontface = "bold", color = "black") +
# c) Utilizar uma paleta de cores divergente (Brewer 'RdBu')
scale_fill_brewer(palette = "RdBu", guide = "none") +
# Customização de Títulos e Rótulos
labs(
title = "Contagem de Diamantes por Qualidade do Corte",
subtitle = "Barras ordenadas com rótulos e paleta divergente.",
x = "Qualidade do Corte",
y = "Contagem de Diamantes (n)"
) +
# Aplicação do tema
theme_minimal() +
theme(
plot.title = element_text(face = "bold")
)
# Exibindo o gráfico
grafico_barras_1_2
```
<!--INICIO DA PÁGINA DE AVANÇO (INTERATIVIDADE)-->
Gráfico Interativo (Crosstalk) {#interativo} {data-navmenu="QUESTÕES GERAIS" data-navmenu-icon="fa-list" data-icon="fa-check"}
=====================================
Column {data-width=500}
-------------------------------------
### Carregamento dos dados (boa prática para código reproduzível)
data(mtcars)
```{r}
# 1. Transformar o mtcars em um objeto de "Dados Compartilhados"
# Isso permite que os filtros controlem os dados
dados_shared <- SharedData$new(mtcars)
# 2. Criar o gráfico com ggplot usando os 'dados_shared' em vez de 'mtcars'
grafico_base <- ggplot(data = dados_shared) +
aes(x = wt, y = mpg, color = as.factor(cyl)) +
geom_point(size = 3) +
labs(
title = "Análise Interativa: Peso vs Consumo",
x = "Peso (1000 lbs)",
y = "Milhas por Galão (mpg)",
color = "Cilindros"
) +
theme_minimal()
# 3. Criar os Filtros
# Filtro deslizante (Slider) para o Peso
filtro_peso <- filter_slider("peso", "Filtrar por Peso (wt)", dados_shared, ~wt)
# Filtro de caixa de seleção (Checkbox) para Cilindros
filtro_cyl <- filter_checkbox("cyl", "Selecionar Cilindros", dados_shared, ~cyl, inline = TRUE)
# 4. Juntar tudo em um layout (Filtros + Gráfico)
# A função bscols organiza em colunas
bscols(
widths = c(3, 9), # 30% da tela para filtros, 70% para o gráfico
list(filtro_cyl, filtro_peso), # Coluna da esquerda (Filtros)
ggplotly(grafico_base) # Coluna da direita (Gráfico Interativo)
)
```
Column {data-width=500}
-----------------------------------------------------------------------
### Chart B
```{r}
```
### Chart C
```{r}
```
Page 3 {#page-3} {data-navmenu="Menu B" data-navmenu="fa-cog"}
=====================================
Page 4 {#page-4} {data-navmenu="Menu B"}
=====================================
Column {data-width=650}
-----------------------------------------------------------------------
### Chart A
```{r}
```
Column {data-width=350}
-----------------------------------------------------------------------
### Chart B
```{r}
```
### Chart C
```{r}
```