Lab_07_Gramática dos Gráficos com ggplot2

Author

Henrique Alvarenga

Published

10 de outubro de 2024

Introdução ao ggplot2

O pacote ggplot2 é uma das ferramentas mais utilizadas em R para criar gráficos de maneira eficiente e elegante. O ggplot2 é baseado em um conceito chamado “Gramática dos Gráficos”, que nos ajuda a entender como diferentes componentes de um gráfico se combinam para formar visualizações complexas. Nesta aula, vamos explorar os principais conceitos por trás dessa gramática e aprender a construir gráficos básicos.

A Gramática dos Gráficos

A Gramática dos Gráficos é como uma “receita” para criar gráficos. Assim como uma receita tem ingredientes que você combina para fazer um prato, a gramática dos gráficos tem componentes que você combina para criar uma visualização.

Componentes da Gramática dos Gráficos

  • Data (Dados): O conjunto de dados que você quer visualizar. Por exemplo, o número de carros vendidos em diferentes meses.
  • Aesthetics (Estéticas): São as características visuais que representam os dados, como a posição dos pontos em um gráfico de dispersão (eixos x e y), a cor dos pontos, o tamanho das barras em um gráfico de barras, etc.
  • Geometries (Geometrias): As formas geométricas que são usadas para representar os dados, como pontos, linhas, barras, etc.
  • Statistics (Estatísticas): Transformações estatísticas que podem ser aplicadas aos dados, como calcular uma média ou um total.
  • Coordinates (Coordenadas): O sistema que define como os dados são projetados no espaço do gráfico.
  • Facets (Facetas): Subdivisões do gráfico em múltiplos painéis, para comparar diferentes subconjuntos dos dados.

Vamos ver como esses componentes funcionam na prática.

Camadas sobre Camadas

No ggplot2, cada gráfico é construído adicionando “camadas”. Você pode imaginar as camadas como diferentes “fases” de construção de um gráfico. Primeiro, você coloca os dados, depois define como esses dados serão representados (por exemplo, como pontos ou barras), e assim por diante.

Vamos começar com um exemplo básico:

Code
# Carregando o pacote ggplot2
library(ggplot2)

# Inciando o gráfico
ggplot(data = mpg)

O R plotou apenas um painel vazio. Apesar de termos informado que oa dados serão do dataset mpg, não informamos mais nada ao R. Vamos qgora adicionar uma camada de pontos, com a estética indicando as variáveis a serem plotadas nos eixos x e y.

Code
# Carregando o pacote ggplot2
library(ggplot2)

# Criando um gráfico de dispersão básico
ggplot(data = mpg) +
  geom_point(aes(x = displ, y = hwy)) 

Explicação do código:
- data = mpg indica que estamos usando o conjunto de dados mpg, que contém informações sobre diferentes modelos de carros.
- geom_point(): Esta camada adiciona pontos ao gráfico, representando cada carro no conjunto de dados. - aes(x = displ, y = hwy): Esta camada indica que estamos mapeando a variável displ (A cilindrada ou volume de deslocamento do motor) no eixo x e hwy (milhas por galão na estrada) no eixo y.

Eixos e Estéticas do Gráfico

As estéticas (aes) são fundamentais para definir como os dados são apresentados no gráfico. Além de definir as posições (x e y), você pode mapear outras características dos dados para diferentes atributos visuais, como cor, tamanho, e forma.

Por exemplo, podemos adicionar mais informações ao gráfico usando cores e tamanhos diferentes para os pontos:

Code
# Adicionando cor e tamanho aos pontos
ggplot(data = mpg) +
  geom_point(aes(x = displ, y = hwy, color = class)) +
  theme_classic()

Aqui: - color = class: A cor dos pontos representa a classe do carro (SUV, compacto, etc.).
- size = cyl: O tamanho dos pontos representa o número de cilindros do motor.

Adicionando um título ao gráfico e aos eixos

Code
# Adicionando cor e tamanho aos pontos
ggplot(data = mpg) +
  geom_point(aes(x = displ, y = hwy, color = class)) +
  labs(title = "Cilindradas vs milhas por galão na estrada",
       subtitle = "Carros do dataset mpg") +
  xlab("Cilindradas do Motor") +
  ylab("milhas por galão na estrada") +
  theme_classic()

Personalizando Eixos

Personalizar os eixos é importante para garantir que o gráfico seja claro e fácil de interpretar. Podemos ajustar os limites e escalas dos eixos:

Code
# Personalizando os eixos
ggplot(data = mpg) +
  geom_point(aes(x = displ, y = hwy, color = class)) +  
  labs(title = "Cilindradas vs milhas por galão na estrada") +
  xlab("Cilindradas do Motor (litros)") +
  ylab("milhas por galão na estrada") +
  scale_x_continuous(breaks = seq(1, 8, by = 0.5)) +
  scale_y_continuous(breaks = seq(10, 40, by = 5)) +
  theme_classic()

Facetas e Grids

Quando trabalhamos com conjuntos de dados que possuem múltiplas variáveis categóricas, pode ser útil visualizar essas variáveis em gráficos separados, mas organizados em uma única figura. No ggplot2, isso pode ser feito usando facet_wrap() e facet_grid(). Ambas as funções dividem o gráfico em múltiplos painéis (ou “facetas”), mas de maneiras ligeiramente diferentes.

A função facet_wrap() é usada para criar múltiplos painéis com base em uma única variável categórica. Ela “enrola” os gráficos em uma grade de acordo com essa variável.

Exemplo de uso de facet_wrap():

Code
library(ggplot2)

# Gráfico de dispersão com facet_wrap()
ggplot(mpg) +
  geom_point(aes(x = displ, y = hwy)) +
  labs(title = "Cilindradas vs milhas por galão na estrada, de acordo com a Classe de Veículo") +
  facet_grid(~ class)

Neste exemplo, o gráfico de dispersão de displ (cilindradas) contra hwy (milhas por galão na estrada) é dividido em diferentes painéis para cada categoria da variável class (tipo de veículo: SUV, compacto, etc.). O facet_wrap() distribui esses gráficos de forma a preencher uma grade de maneira eficiente, permitindo a comparação entre os diferentes tipos de veículos.

A função facet_grid() permite que você crie uma grade de gráficos, facetando os dados por duas variáveis: uma ao longo do eixo das linhas e outra ao longo do eixo das colunas. Isso é especialmente útil quando você quer comparar dois aspectos categóricos simultaneamente.

Code
# Gráfico de dispersão com facet_grid()
ggplot(mpg, aes(x = displ, y = hwy)) +
  geom_point() +
  labs(title = "Cilindradas vs milhas por galão na estrada, de acordo com a Classe e Marcha") +
  facet_grid(drv ~ class)

Neste exemplo, o gráfico é dividido em uma grade onde drv (tipo de tração: 4x4, tração dianteira, etc.) define as linhas e class (tipo de veículo) define as colunas. Isso permite uma comparação mais detalhada entre combinações de duas variáveis.

Conclusão

Nesta aula, abordamos os conceitos fundamentais da gramática dos gráficos com ggplot2. Vimos como os componentes de um gráfico se combinam para criar visualizações significativas e como podemos personalizar essas visualizações para melhor representar os dados.

Atividade Prática

Agora é sua vez! Experimente criar um gráfico que combine múltiplas camadas, personalize eixos e estéticas, e visualize diferentes aspectos dos dados.

Code
# Desafio: Crie um gráfico usando múltiplas camadas
ggplot(data = mpg, aes(x = displ, y = hwy)) +
  geom_point() +
  geom_smooth(formula = 'y ~ x', method = "lm") +
  labs(title = "Desafio: Gráfico com múltiplas camadas")

Tente ajustar o gráfico para adicionar mais camadas, ajustar as estéticas, e personalizar os eixos conforme necessário. Boa sorte!

Code
ggplot(data = mpg, aes(y = hwy, x=class, fill  = class)) +
  geom_boxplot() +
  theme_classic()