Logo 7ª RPM

Exercício 1.1

#Data mtcars

if(!require(plotly)){install.packages("plotly")}
## Carregando pacotes exigidos: plotly
## Carregando pacotes exigidos: ggplot2
## 
## Anexando pacote: 'plotly'
## O seguinte objeto é mascarado por 'package:ggplot2':
## 
##     last_plot
## O seguinte objeto é mascarado por 'package:stats':
## 
##     filter
## O seguinte objeto é mascarado por 'package:graphics':
## 
##     layout
library(plotly)
df<-mtcars

library(ggplot2)

ggplot(df) +
 aes(x = mpg, y = wt, colour = cyl) +
 geom_point(size = 1.75) +
 scale_color_gradient() +
 labs(x = "Milhas por galão", y = "Peso", title = "Relação entre Peso e Consumo de Combustível") +
 theme_minimal() +
 theme(plot.caption = element_text(hjust = 0.5))

Exercício 1.2

# Carregar pacotes
library(ggplot2)
library(dplyr)
## 
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
## 
##     filter, lag
## Os seguintes objetos são mascarados por 'package:base':
## 
##     intersect, setdiff, setequal, union
data("diamonds")

# Criar gráfico
diamonds %>%
  count(cut) %>%                           # Contagem por corte
  arrange(desc(n)) %>%                     # Ordenar em ordem decrescente
  ggplot(aes(x = reorder(cut, -n), y = n, fill = cut)) +
  geom_bar(stat = "identity") +            # Barras com valores
  geom_text(aes(label = n),                # Rótulos de valor
            vjust = -0.3, size = 4) +
  scale_fill_brewer(palette = "RdYlBu") +  # Paleta divergente
  labs(title = "Contagem de diamantes por corte",
       x = "Corte",
       y = "Quantidade") +
  theme_minimal()

Exercício 1.3

# 1. Carregar a biblioteca
library(ggplot2)

# 2. Criar o gráfico
ggplot(data = diamonds, aes(x = cut, y = price, fill = cut)) +
  
  # Geometria de Boxplot
  geom_boxplot() +
  
  # (a) Títulos e rótulos em português
  labs(
    title = "Distribuição de Preços por Qualidade do Corte",
    subtitle = "Análise baseada no dataset diamonds",
    x = "Qualidade do Corte",
    y = "Preço (USD)"
  ) +
  
  # (b) Cores customizadas (uma cor para cada nível do corte)
  scale_fill_manual(values = c(
    "Fair" = "#FF6F61",      # Coral
    "Good" = "#6B5B95",      # Roxo
    "Very Good" = "#88B04B", # Verde
    "Premium" = "#F7CAC9",   # Rosa claro
    "Ideal" = "#92A8D1"      # Azul claro
  )) +
  
  # (c) e (d) Ajustes de tema (Legenda e Ângulo do Eixo)
  theme_minimal() + # Um tema limpo de base
  theme(
    legend.position = "none", # Remove a legenda (redundante pois o eixo X já explica)
    axis.text.x = element_text(angle = 45, hjust = 1, size = 12) # Rotaciona o texto do eixo X
  )

Exercício 1.4

a. Explique a diferença entre os geoms geom_point() e geom_jitter(). Em que situação cada um é mais apropriado?

Ambos servem para plotar pontos em um gráfico. O geom_point() plota os pontos exatamente nas coordenadas (x,y) dos dados, o que pode causar o “overpotting”, que é a sobreposição de pontos que tenham as mesmas coordenadas. Nesse caso, não será possível, apenas visualmente, saber a quantidade de pontos na coordanada indicada. O geom_jitter() é uma solução para a sobreposição. Ele adiciona um pequeno ruído, um pequeno deslocamento de cada ponto na posição do gráfico. Assim, caso vários pontos tenham as mesmas coordenadas, eles não se sobrepõem, sendo possível identificar visualmente uma núvem de pontos em uma coordenada única. O geom_point() é mais usado em situações que demanda muita precisão e, geralmente, quando se trabalha com duas variáveis contínuas, com casas decimais. Assim a chance de haver coordenadas idênticas se reduz. Já o geom_jitter() é usado quando se trabalha com variáveis discretas ou categóricas ou quando se tem muitos dados concentrados, como por exemplo em conjunto de notas de clietens para um determinado produto e cuja pontuação varia de 1 a 5, apenas com números inteiros.

b. Descreva o conceito de ”Gramática dos Gráficos” e como ele é implementado no ggplot2. O conceito de grmática dos gráficos foi desenvolvido por Leland Wilkinson, em 1999 e trata um gráfico como um conjunto de dados para atributos estéticos (cor, forma, tamanho) e objetos geométricos (pontos, linhas, barras). Da mesma forma que uma frase é formada por palavas concatendas, os gráficos são formados por concatenações de conjuntos de dados.

A biblioteca ggplot2, desenvovlida por Hadley Wickham implementa essa teoria, adatando uma abordagem por “camadas” ou “layers”. As letras “gg”, inclusive, significam grammar of graphics. Um exemplo de código, em R, seria:

library(ggplot2)

ggplot(data = mtcars, aes(x = wt, y = mpg)) + # dados + estética

geom_point() + # geometria

geom_smooth(method = “lm”) + # estatística (reta de regressão)

labs(title = “Consumo vs Peso do carro”) + # rótulos

theme_minimal() # tema