EXERCÍCIO 1.1 - INTRODUÇÃO AO GGPLOT2 (Gráfico de Dispersão)

# Garantir que 'cyl' seja tratada como variável categórica para o mapeamento de cores
mtcars$cyl <- as.factor(mtcars$cyl)

grafico_1_1 <- ggplot(data = mtcars, aes(x = wt, y = mpg)) +
  # Camada de pontos: cor diferenciada pela variável cyl (1.1c)
  geom_point(aes(color = cyl), size = 3) + 
  
  # Título e Rótulos (1.1a e 1.1b)
  labs(
    title = "Relação entre Peso e Consumo de Combustível",
    x = "Peso do Carro (Milhares de Libras)",
    y = "Consumo (Milhas por Galão - mpg)",
    color = "Cilindros" 
  ) 


print(grafico_1_1)

EXERCÍCIO 1.2 - GRÁFICOS DE BARRAS (diamonds)

grafico_1_2 <- diamonds %>%
  # Ordenar as barras em ordem decrescente (1.2a)
  # fct_infreq ordena pela frequência (contagem), que é o valor das barras.
  mutate(cut = fct_infreq(cut)) %>%
  
  ggplot(aes(x = cut)) +
  # Camada de barras (geom_bar calcula a contagem automaticamente)
  geom_bar(aes(fill = cut)) +
  
  # Adicionar rótulos de valor em cada barra (1.2b)
  geom_text(
    aes(label = after_stat(count)), 
    stat = "count", 
    vjust = -0.5
  ) +
  
  # Utilizar uma paleta de cores divergente (1.2c). "BrBG" é uma opção.
  scale_fill_brewer(palette = "BrBG") +
  
  # Customização final
  labs(
    title = "Contagem de Diamantes por Qualidade de Corte",
    x = "Qualidade do Corte",
    y = "Contagem de Diamantes",
    fill = "Corte"
  ) +
  theme(legend.title = element_blank()) # Remove o título da legenda (estética)

print(grafico_1_2)

EXERCÍCIO 1.3 - CUSTOMIZAÇÃO AVANÇADA (Boxplot)

# Definir as cores customizadas (1.3b)
cores_customizadas <- c(
  "Fair" = "#FF7F00",        # Laranja Escuro
  "Good" = "#FFFF99",        # Amarelo Claro
  "Very Good" = "#33A02C",   # Verde Escuro
  "Premium" = "#1F78B4",      # Azul Escuro
  "Ideal" = "#E31A1C"         # Vermelho
)

grafico_1_3 <- ggplot(diamonds, aes(x = cut, y = price)) +
  # Camada Boxplot: preenchida pelas cores das categorias
  geom_boxplot(aes(fill = cut)) +
  
  # Aplicar cores customizadas
  scale_fill_manual(values = cores_customizadas) +
  
  # Títulos e rótulos em Português (1.3a)
  labs(
    title = "Distribuição de Preços por Qualidade de Corte",
    x = "Qualidade do Corte",
    y = "Preço (dólares)"
  ) +
  
  # Ajustes finos com theme()
  theme(
    # Remover a legenda (1.3c)
    legend.position = "none",
    # Ajuste do ângulo dos rótulos do eixo X (1.3d)
    axis.text.x = element_text(angle = 45, hjust = 1)
  )

print(grafico_1_3)

EXERCÍCIO 1.4 - CONCEITOS FUNDAMENTAIS

QUESTAO 1

Explique a diferenca entre os geoms geom_point() e geom_jitter(). Em que situacao cada um é mais apropriado?

#RESPOSTA: O geom_jitter() é uma variação do geom_point(), a diferença entre as duas se da pelo fato de o geom_point() representar com exatidão o local dos pontos do grafico, enquanto o geom_jitter() cria uma especie de "ruido" entre os pontos. a finalidade da inserção desse "ruido" se dá para evitar sobreposições e dar uma ideia real da densidade de frequencia em cada localização do grafico.

QUESTAO 2

Descreva o conceito de “Gramatica dos Graficos” e como ele é implementado no ggplot2.

#RESPOSTA: A Gramática dos Gráficos (The Grammar of Graphics) é um conceito que define os elementos de um gráfico através de uma estrutura lógica e modular, como se fosse a sintaxe de uma linguagem.
#Ela é implementada no pacote ggplot2 na forma de camadas, onde você constrói o gráfico em etapas sequenciais (utilizando o operador +).

#Os principais componentes ou camadas que implementam essa gramática no ggplot2 são:

#Dados (Data): O data frame ou conjunto de informações que contém as variáveis.

#Estéticas (Aesthetics - aes()): Mapeia as variáveis dos dados às propriedades visuais do gráfico (eixos X/Y, cor, tamanho, forma, etc.).

#Geometrias (Geometries - geom_*()): Define o formato visual dos dados (pontos, barras, linhas, caixas, etc.).

#Ao combinar essas camadas, você cria qualquer tipo de visualização de forma declarativa e consistente.