UDI: 17ª RPM

1 Questões Gerais - Dashboard

{r setup, include=FALSE} knitr::opts_chunk$set(ECHO = TRUE) library(ggplot2) library(dplyr) data(diamonds)

Relatório de Análise de Dados

1.1 - Introdução ao ggplot2

{r, fig.height=6, fig.width=8} # Gráfico de dispersão conforme solicitado ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) + geom_point(size = 3) + labs( title = “Relação entre Peso e Consumo de Combustível”, x = “Peso do Carro (milhares de libras)”, y = “Milhas por Galão (mpg)”, color = “Número de Cilindros” ) + theme_minimal()

1.2 - Gráfico de Barras

{r, fig.height=6, fig.width=8} # 1. Preparar os dados: contar e ordenar dados_ordenados <- diamonds %>% count(cut) %>% arrange(desc(n)) %>% mutate(cut = factor(cut, levels = cut))

2. Criar o gráfico com todos os requisitos

ggplot(dados_ordenados, aes(x = cut, y = n, fill = cut)) + geom_bar(stat = “identity”) + # Barras geom_text(aes(label = n), vjust = -0.5, size = 4) + # Rótulos labs( title = “Contagem de Diamantes por Corte”, x = “Tipo de Corte”, y = “Número de Diamantes” ) + scale_fill_brewer(palette = “Spectral”) + # Paleta divergente theme_minimal() + theme(legend.position = “none”) # Remove legenda

1.3 - Customização Avançada

{r, fig.height=6, fig.width=8} # 1. Criar dataset com tradução diamonds_pt <- diamonds %>% mutate(cut_pt = factor(cut, levels = c(“Fair”, “Good”, “Very Good”, “Premium”, “Ideal”), labels = c(“Regular”, “Bom”, “Muito Bom”, “Premium”, “Ideal”) ))

2. Criar o boxplot com personalizações

ggplot(diamonds_pt, aes(x = cut_pt, y = price, fill = cut_pt)) + geom_boxplot() + labs( title = “Distribuição de Preços por Qualidade de Corte”, x = “Qualidade do Corte”, y = “Preço (US$)” ) + scale_fill_manual(values = c( “Regular” = “#E74C3C”, “Bom” = “#3498DB”, “Muito Bom” = “#2ECC71”, “Premium” = “#F1C40F”, “Ideal” = “#9B59B6” )) + theme_minimal() + theme( legend.position = “none”, # Remove legenda axis.text.x = element_text(angle = 45, hjust = 1) # Ângulo de 45° )

1.4 - Conceitos Fundamentais

Questão 1: Diferença entre geom_point() e geom_jitter()

geom_point() plota os pontos exatamente nas coordenadas especificadas pelos dados. É mais apropriado quando:

  • A posição exata dos dados é importante para a interpretação
  • Não há sobreposição significativa de pontos (overplotting)
  • Exemplos: gráficos de dispersão com dados contínuos, séries temporais

geom_jitter() adiciona um pequeno ruído aleatório (jitter) à posição dos pontos. É mais apropriado quando:

  • Muitos pontos compartilham as mesmas coordenadas exatas
  • Há sobreposição que dificulta ver a distribuição real
  • Exemplos: dados categóricos, variáveis discretas, escalas Likert

Exemplo visual da diferença:

{r, echo=FALSE, fig.height=4, fig.width=8} library(ggplot2) library(patchwork)

Dados de exemplo com sobreposição

set.seed(123) dados <- data.frame( x = rep(1:3, each = 50), y = rep(c(1, 2, 1), each = 50) + rnorm(150, 0, 0.1) )

p1 <- ggplot(dados, aes(x = factor(x), y = y)) + geom_point(alpha = 0.6) + labs(title = “geom_point()”, subtitle = “Pontos sobrepostos”) + theme_minimal()

p2 <- ggplot(dados, aes(x = factor(x), y = y)) + geom_jitter(width = 0.2, height = 0.1, alpha = 0.6) + labs(title = “geom_jitter()”, subtitle = “Ruído reduz sobreposição”) + theme_minimal()

p1 + p2

Questão 2: Gramática dos Gráficos e implementação no ggplot2

Conceito de “Gramática dos Gráficos”

A Gramática dos Gráficos, proposta por Leland Wilkinson, é um sistema estruturado para construir visualizações de dados através de componentes básicos que se combinam de forma consistente, similar a uma linguagem gramatical. O objetivo é fornecer uma estrutura teórica para descrever e construir gráficos de maneira sistemática.

Implementação no ggplot2

No pacote ggplot2 do R, desenvolvido por Hadley Wickham, a Gramática dos Gráficos é implementada através de sete componentes principais:

  1. Dados (Data): Conjunto de dados a ser visualizado r ggplot(data = dados, …)

  2. Mapeamentos Estéticos (Aesthetics): Como variáveis são mapeadas para propriedades visuais r aes(x = variavel_x, y = variavel_y, color = categoria)

  3. Objetos Geométricos (Geoms): Formas visuais que representam os dados r geom_point() # Pontos geom_bar() # Barras geom_line() # Linhas

  4. Transformações Estatísticas (Stats): Cálculos sobre os dados antes do plot r stat_smooth() # Suavização stat_summary() # Sumarização

  5. Sistemas de Coordenadas (Coordinates): Como as posições são mapeadas no plano r coord_cartesian() # Cartesianas (padrão) coord_polar() # Polares (gráfico de pizza) coord_flip() # Inverte eixos

  6. Facetas (Facets): Cria múltiplos painéis por variáveis categóricas r facet_wrap(~categoria) # Painéis em grade facet_grid(linha~coluna) # Grade com duas dimensões

  7. Temas (Themes): Elementos não relacionados aos dados r theme_minimal() # Tema minimalista theme_bw() # Preto e branco theme() # Personalização completa

Síntese da abordagem no ggplot2

A implementação segue o princípio de composição por camadas, onde cada componente é adicionado com o operador +:

r ggplot(data, aes(x, y, color = grupo)) + # Dados + estéticas geom_point() + # Geometria stat_smooth(method = “lm”) + # Estatística facet_wrap(~grupo) + # Facetas coord_cartesian() + # Coordenadas theme_minimal() + # Tema labs(title = “Meu Gráfico”) # Rótulos

Esta abordagem permite construir gráficos complexos de forma incremental, mantendo consistência e flexibilidade, alinhando-se perfeitamente com os princípios da Gramática dos Gráficos.