UDI: 17ª RPM
1 Questões Gerais - Dashboard
{r setup, include=FALSE} knitr::opts_chunk$set(ECHO = TRUE) library(ggplot2) library(dplyr) data(diamonds)
{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()
{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))
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
{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”) ))
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° )
geom_point() plota os pontos exatamente nas coordenadas especificadas pelos dados. É mais apropriado quando:
geom_jitter() adiciona um pequeno ruído aleatório (jitter) à posição dos pontos. É mais apropriado quando:
Exemplo visual da diferença:
{r, echo=FALSE, fig.height=4, fig.width=8} library(ggplot2) library(patchwork)
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
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.
No pacote ggplot2 do R, desenvolvido por Hadley Wickham, a Gramática dos Gráficos é implementada através de sete componentes principais:
Dados (Data): Conjunto de dados a ser visualizado r ggplot(data = dados, …)
Mapeamentos Estéticos (Aesthetics): Como variáveis são mapeadas para propriedades visuais r aes(x = variavel_x, y = variavel_y, color = categoria)
Objetos Geométricos (Geoms): Formas visuais que representam os dados r geom_point() # Pontos geom_bar() # Barras geom_line() # Linhas
Transformações Estatísticas (Stats): Cálculos sobre os dados antes do plot r stat_smooth() # Suavização stat_summary() # Sumarização
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
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
Temas (Themes): Elementos não relacionados aos dados r theme_minimal() # Tema minimalista theme_bw() # Preto e branco theme() # Personalização completa
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.