O pacote GGally é uma extensão poderosa do ggplot2 que facilita a criação de gráficos complexos e matrizes de visualização para análise exploratória de dados. Desenvolvido para automatizar a criação de múltiplos gráficos relacionados, o GGally é especialmente útil quando você precisa entender rapidamente as relações entre múltiplas variáveis em seu conjunto de dados.
Primeiro, vamos instalar e carregar o pacote junto com suas dependências:
# Instalação (caso não tenha o pacote instalado)
install.packages("GGally")
# Carregamento dos pacotes necessários
library(GGally)
library(ggplot2)
library(dplyr)Preparando os Dados
Para demonstrar as funcionalidades do GGally, utilizaremos o conjunto de dados mtcars, que contém informações sobre diferentes modelos de carros:
# Carregando e visualizando os dados
data(mtcars)
# Selecionando algumas variáveis para análise
dados <- mtcars |>
select(mpg, disp, hp, wt, qsec, vs, am)
# Visualizando a estrutura dos dados
str(dados)
head(dados)
> str(dados)
'data.frame': 32 obs. of 7 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : Factor w/ 2 levels "Automático","Manual": 2 2 2 1 1 1 1 1 1 1 ...
> head(dados)
mpg disp hp wt qsec vs am
Mazda RX4 21.0 160 110 2.620 16.46 0 Manual
Mazda RX4 Wag 21.0 160 110 2.875 17.02 0 Manual
Datsun 710 22.8 108 93 2.320 18.61 1 Manual
Hornet 4 Drive 21.4 258 110 3.215 19.44 1 Automático
Hornet Sportabout 18.7 360 175 3.440 17.02 0 Automático
Valiant 18.1 225 105 3.460 20.22 1 AutomáticoCode language: JavaScript (javascript)
1. ggpairs(): A Matriz de Correlação Completa
A função ggpairs() é a principal funcionalidade do GGally. Ela cria automaticamente uma matriz de gráficos que mostra:
- Diagonal superior: Correlações entre variáveis
- Diagonal: Histogramas das variáveis
- Diagonal inferior: Gráficos de dispersão
# Criando uma matriz de correlação básica
matriz_basica <- ggpairs(dados)
print(matriz_basica)
Personalizando a Matriz de Correlação
Podemos personalizar a matriz adicionando cores baseadas em uma variável categórica:
# Convertendo 'am' para fator para colorir os gráficos
dados$am <- factor(dados$am, labels = c("Automático", "Manual"))
# Matriz colorida por tipo de transmissão
matriz_colorida <- ggpairs(dados,
aes(color = am),
title = "Matriz de Correlação - Dados de Carros",
upper = list(continuous = wrap("cor", size = 4)),
lower = list(continuous = wrap("points", alpha = 0.7)),
diag = list(continuous = wrap("densityDiag", alpha = 0.5)))
print(matriz_colorida)
2. ggcorr(): Mapa de Calor de Correlações
Para visualizar apenas as correlações em formato de mapa de calor:
# Criando um mapa de calor das correlações
mapa_correlacao <- ggcorr(dados[, 1:5],
method = c("everything", "pearson"),
label = TRUE,
label_size = 3,
hjust = 0.8,
layout.exp = 1,
palette = "RdYlBu")
print(mapa_correlacao)
3. ggscatmat(): Matriz de Gráficos de Dispersão
Para focar apenas nos gráficos de dispersão entre variáveis:
# Matriz de dispersão simples
dispersao_matriz <- ggscatmat(dados,
columns = 1:5,
color = "am",
alpha = 0.7)
print(dispersao_matriz)
4. Gráficos de Redes com ggnet2()
O GGally também permite criar gráficos de rede. Vamos criar um exemplo com dados simulados:
# Criando dados de exemplo para rede
library(network)
# Criando uma matriz de adjacência simples
set.seed(123)
matriz_adj <- matrix(sample(0:1, 25, replace = TRUE, prob = c(0.7, 0.3)), 5, 5)
diag(matriz_adj) <- 0
# Criando o objeto de rede
rede <- network(matriz_adj, directed = FALSE)
# Visualizando a rede
grafico_rede <- ggnet2(rede,
node.size = 10,
node.color = "lightblue",
edge.size = 1,
edge.color = "gray")
print(grafico_rede)
PS: Eu sei que esse grago ficou mirradinho mas prometo fazer um outro post aqui sobre criação de grafos em larga escala com R e Python.
5. Gráficos de Sobrevivência com ggsurv()
Para análise de sobrevivência (requer o pacote survival):
# Exemplo com dados de sobrevivência
library(survival)
# Criando um objeto de sobrevivência
sobrevivencia <- survfit(Surv(time, status) ~ sex, data = lung)
# Plotando a curva de sobrevivência
curva_sobrevivencia <- ggsurv(sobrevivencia) +
labs(title = "Curva de Sobrevivência por Sexo",
x = "Tempo (dias)",
y = "Probabilidade de Sobrevivência")
print(curva_sobrevivencia)
6. Personalizações Avançadas
Modificando Tipos de Gráficos na Matriz
# Função personalizada para a diagonal superior
minha_cor <- function(data, mapping, ...) {
# Extraindo os nomes das variáveis do mapeamento
x_var <- as.character(mapping$x)[2]
y_var <- as.character(mapping$y)[2]
# Calculando a correlação
correlacao <- cor(data[[x_var]], data[[y_var]], use = "complete.obs")
# Criando o gráfico com o valor da correlação
ggplot(data = data, mapping = mapping) +
geom_text(aes(x = mean(range(!!mapping$x)),
y = mean(range(!!mapping$y))),
label = round(correlacao, 3),
size = 4,
color = "black") +
theme_minimal() +
theme(axis.text = element_blank(),
axis.ticks = element_blank())
}
# Função personalizada para a diagonal inferior
meu_scatter <- function(data, mapping, ...) {
ggplot(data = data, mapping = mapping) +
geom_point(alpha = 0.6, size = 2) +
geom_smooth(method = "lm", color = "red", se = FALSE) +
theme_minimal()
}
# Aplicando personalizações
matriz_personalizada <- ggpairs(dados,
aes(color = am),
upper = list(continuous = minha_cor),
lower = list(continuous = meu_scatter),
diag = list(continuous = wrap("densityDiag", alpha = 0.7)),
title = "Análise Personalizada dos Dados de Carros")
print(matriz_personalizada)

Salvando Gráficos com Alta Qualidade
# Salvando a matriz de correlação
ggsave("matriz_correlacao.png",
plot = matriz_colorida,
width = 12,
height = 10,
dpi = 300)
# Salvando o mapa de calor
ggsave("mapa_calor_correlacao.png",
plot = mapa_correlacao,
width = 8,
height = 6,
dpi = 300)
Vantagens do GGally
- Automatização: Cria múltiplos gráficos automaticamente
- Flexibilidade: Permite personalização completa usando sintaxe ggplot2
- Eficiência: Ideal para análise exploratória rápida
- Integração: Funciona perfeitamente com o ecossistema tidyverse
- Variedade: Suporta diferentes tipos de visualização em um único pacote
Dicas Importantes
- Use
ggpairs()para uma visão geral completa dos seus dados - Para datasets grandes, considere usar uma amostra ou selecionar variáveis específicas
- Sempre ajuste os parâmetros de transparência (
alpha) para melhor visualização - Combine com
dplyrpara preparar os dados antes da visualização
O GGally é uma ferramenta essencial para qualquer cientista/analista de dados que trabalhe com R. Sua capacidade de criar visualizações complexas com código simples torna a análise exploratória muito mais eficiente e intuitiva.
Código Final Completo
# Carregamento dos pacotes
library(GGally)
library(ggplot2)
library(dplyr)
library(survival)
library(network)
# Preparação dos dados
data(mtcars)
dados <- mtcars |>
select(mpg, disp, hp, wt, qsec, vs, am) |>
mutate(am = factor(am, labels = c("Automático", "Manual")))
# 1. Matriz de correlação básica
matriz_basica <- ggpairs(dados)
# 2. Matriz de correlação personalizada
matriz_colorida <- ggpairs(dados,
aes(color = am),
title = "Matriz de Correlação - Dados de Carros",
upper = list(continuous = wrap("cor", size = 4)),
lower = list(continuous = wrap("points", alpha = 0.7)),
diag = list(continuous = wrap("densityDiag", alpha = 0.5)))
# 3. Mapa de calor das correlações
mapa_correlacao <- ggcorr(dados[, 1:5],
method = c("everything", "pearson"),
label = TRUE,
label_size = 3,
hjust = 0.8,
layout.exp = 1,
palette = "RdYlBu")
# 4. Matriz de dispersão
dispersao_matriz <- ggscatmat(dados,
columns = 1:5,
color = "am",
alpha = 0.7)
# 5. Gráfico de rede
set.seed(123)
matriz_adj <- matrix(sample(0:1, 25, replace = TRUE, prob = c(0.7, 0.3)), 5, 5)
diag(matriz_adj) <- 0
rede <- network(matriz_adj, directed = FALSE)
grafico_rede <- ggnet2(rede,
node.size = 10,
node.color = "lightblue",
edge.size = 1,
edge.color = "gray")
# 6. Curva de sobrevivência
sobrevivencia <- survfit(Surv(time, status) ~ sex, data = lung)
curva_sobrevivencia <- ggsurv(sobrevivencia) +
labs(title = "Curva de Sobrevivência por Sexo",
x = "Tempo (dias)",
y = "Probabilidade de Sobrevivência")
# 7. Personalizações avançadas
minha_cor <- function(data, mapping, ...) {
# Extraindo os nomes das variáveis do mapeamento
x_var <- as.character(mapping$x)[2]
y_var <- as.character(mapping$y)[2]
# Calculando a correlação
correlacao <- cor(data[[x_var]], data[[y_var]], use = "complete.obs")
# Criando o gráfico com o valor da correlação
ggplot(data = data, mapping = mapping) +
geom_text(aes(x = mean(range(!!mapping$x)),
y = mean(range(!!mapping$y))),
label = round(correlacao, 3),
size = 4,
color = "black") +
theme_minimal() +
theme(axis.text = element_blank(),
axis.ticks = element_blank())
}
meu_scatter <- function(data, mapping, ...) {
ggplot(data = data, mapping = mapping) +
geom_point(alpha = 0.6, size = 2) +
geom_smooth(method = "lm", color = "red", se = FALSE) +
theme_minimal()
}
matriz_personalizada <- ggpairs(dados,
aes(color = am),
upper = list(continuous = minha_cor),
lower = list(continuous = meu_scatter),
diag = list(continuous = wrap("densityDiag", alpha = 0.7)),
title = "Análise Personalizada dos Dados de Carros")
# Visualizando os gráficos
print(matriz_basica)
print(matriz_colorida)
print(mapa_correlacao)
print(dispersao_matriz)
print(grafico_rede)
print(curva_sobrevivencia)
print(matriz_personalizada)
# Salvando os gráficos
ggsave("matriz_correlacao.png", plot = matriz_colorida, width = 12, height = 10, dpi = 300)
ggsave("mapa_calor_correlacao.png", plot = mapa_correlacao, width = 8, height = 6, dpi = 300)


Deixe um comentário