Outubro 21, 2019

O pacote ggplot2, função ggplot – linguagem R

O ggplot2 é um pacote da linguagem R construído para visualização de dados. Ele é parte da coleção de pacotes Tidyverse, muito utilizada para análise de dados e machine learning. Hadley Wickham, cientista chefe do RStudio, e professor de estatística na Universidade de Auckland, Stanford University, e Rice University, desenvolveu o ggplot2 baseado no livro “A Gramática dos Gráficos” (The Grammar of Graphics), de Leland Wilkinson.

As funções do pacote

O pacote possui muitas funções, sendo que para detalharmos todas seriam necessárias horas de leitura, o que não é a nossa ideia nesse momento. Vamos focar na estrutura de funções utilizada, que lhe permitirá começar a utilizar o ggplot2 com excelentes resultados.

O mais natural é começar o estudo com a função ggplot(), na qual é informado o dataset com os dados que iremos visualizar e também a função aes(), que receberá a indicação das variáveis a serem utilizadas nos respectivos eixos, com a indicação do visual a ser utilizado, como cor, formas (pontos, triângulos, quadrados, etc.), tamanho, etc.

Após estas definições, a primeira camada já está pronta, porém nosso gráfico ainda estará vazio, caso seja plotado com apenas estes parâmetros. Precisamos definir o tipo de gráfico que iremos utilizar, e para isso temos as funções geom_(), com várias possibilidades.

Funções geom_()

O ggplot2 possui mais de 30 funções geom(). Vamos conhecer as mais utilizadas, e no final da página apresentaremos a lista completa:

  • geom_point() – cria um gráfico de dispersão, onde são indicados os pontos de cruzamento entre os dados do eixo x com o eixo y.
  • geom_histogram() – apresentação de histogramas.
  • geom_abline() – inserção de retas.
  • geom_boxplot() – criação de um boxplot.
  • geom_bar() – gráfico de barras.

ggplot2 na prática

Com essa simples introdução sobre as funções ggplot(), aes() e geom_(), já podemos partir para a prática, e de maneira muito simples construir gráficos sofisticados e poderosos.

Vamos utilizar a base de dados mpg do ggplot2, que possui dados sobre o consumo de combustível de 38 carros entre 1999 e 2008, para criar nossos primeiros gráficos.

library(ggplot2)
library(plyr)

carros <- rename(mpg, c("displ" = "Cilindradas",
"cty" = "Consumo",
"drv" = "Tração",
"class" = "Tipo"))


carros
# A tibble: 234 x 11
manufacturer model Cilindradas year cyl trans Tração Consumo hwy fl Tipo

1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compact
7 audi a4 3.1 2008 6 auto(av) f 18 27 p compact
8 audi a4 quattro 1.8 1999 4 manual(m5) 4 18 26 p compact
9 audi a4 quattro 1.8 1999 4 auto(l5) 4 16 25 p compact
10 audi a4 quattro 2 2008 4 manual(m6) 4 20 28 p compact
… with 224 more rows

Carregamos também o pacote plyr para utilizarmos a função rename() e renomear as variáveis do dataset mpg, salvando o resultado com o nome “carros”.

ggplot(carros, aes(Cilindradas, Consumo))
Gráfico com a primeira camada

Aqui definimos o dadaset a ser utilizado, e com a função aes(Cilindradas, Consumo) informamos que a variável Cilindradas ficará no eixo x, e a variável Consumo no eixo y. Porém conforme vemos na imagem, desta forma o resultado será apenas um plot sem dados. Precisamos adicionar ao script uma das funções geom_() para definir o tipo de gráfico.

ggplot(carros, aes(Cilindradas, Consumo)) +
geom_point()

Gráfico ggplot com dados

Com o sinal de “+” adicionamos a função geom_point(), responsável por inserir os pontos que vemos na imagem acima. Podemos ver que há uma relação nos dados. Conforme as cilindradas aumentam, o consumo diminui. Porém há casos onde mesmo com baixa cilindrada o consumo também está baixo. Vamos adicionar mais informações para tentar entender essas situações.

ggplot(carros, aes(Cilindradas, Consumo,
size = Tração,
color = Tipo)) +
geom_point()
Gráfico ggplot com dados, cores e tamanho

Com estes ajustes chegamos a um gráfico muito mais interessante, simplesmente adicionando os parâmetros “size” e “color” a função aes(). Definimos que o tamanho dos nossos pontos irá variar de acordo com o conteúdo da variável Tração, e a cor irá mudar com base nos dados da variável Tipo. Assim, podemos verificar que praticamente todos os carros com consumo abaixo de 15 possuem tração traseira ou nas quatro rodas, e apenas carros com tração dianteira atingem consumo superior a 20. A grande maioria dos carros com alto consumo são SUV’s ou pick-ups , e os mais econômicos são compactos ou subcampactos.

Até agora utilizamos apenas uma função geom_(), mas conforme falamos, existem muitas, e elas podem ser utilizadas ao mesmo tempo.

ggplot(carros, aes(Cilindradas, Consumo)) +
geom_point(aes(size = Tração, color = Tipo)) +
geom_smooth(method = "lm")
Gráfico ggplot com dados, cores, tamanho e reta de regressão linear

Para adicionar mais elementos ao gráfico, basta seguirmos utilizando o sinal “+”, e as funções que desejarmos. Com a função geom_smooth() inserimos uma reta, e utilizando o método “lm” estamos definindo que queremos uma reta de regressão linear. Esta é a reta que melhor se ajusta a relação existente entre as Cilindradas e o Consumo.

É importante observarmos que cada função pode receber dados diferentes das demais, sendo que se mantivermos todas as configurações da função aes() na função ggplot(), elas serão replicadas para as demais funções. Neste nosso exemplo isso levaria a um gráfico com várias retas, criadas a partir de cada informação nas variáveis Tipo e Tração, conforme vemos na imagem abaixo.

ggplot(carros, aes(Cilindradas, Consumo, size = Tração, color = Tipo)) +
geom_point() +
geom_smooth(method = "lm")
Gráfico ggplot com dados, cores, tamanho e várias retas

Como queremos visualizar apenas a reta que demonstra a relação entre as cilindradas e o consumo, separamos os parâmetros da função aes(). Realizamos a sua definição na função ggplot(), informando apenas as variáveis Cilindradas e Consumo como eixos x e y de todas as funções, mas o ajuste de tamanho e cor é inserido somente na função que exibe os pontos, no caso a geom_point().

Continue aprendendo R

Pensando nas aplicações da linguagem R necessárias nas etapas de pré-processamento para machine learning, desenvolvemos o curso de R para machine learning, gratuito e totalmente didático. Neste curso mostramos na prática a utilização de pacotes do Tidyverse, e ainda um algoritmo de machine learning na criação de um modelo.

Clique aqui e confira todos os nossos cursos.

Lista completa de funções geom_():

  • geom_abline() – Linhas de referência: horizontal, vertical e diagonal
  • geom_bar() – Gráficos de barra
  • geom_bin2d() – Mapa de calor das contagens de bin 2d
  • geom_blank() – Plot em branco
  • geom_boxplot() – Cria um boxplot
  • geom_contour() – 2D contornos de uma superfície 3d
  • geom_count() – Conta pontos sobrepostos
  • geom_crossbar() – Intervalos verticais: linhas, barras transversais e barras de erro
  • geom_density() – Estimativa de densidade kernel
  • geom_density_2d() – Estimativa de densidade kernel 2d apresentando os resultados com contorno
  • geom_dotplot() – Gráfico de pontos
  • geom_errorbarh() – Barras de erro horizontais
  • geom_freqpoly() – Histogramas e polígonos de frequência
  • geom_hex() – Mapa de calor hexagonal de contagens de bin 2d
  • geom_jitter() – Pontos agitados
  • geom_label() – Texto
  • geom_map() – Polígonos de um mapa de referência
  • geom_path() – Conectar observações
  • geom_point() – Pontos
  • geom_polygon() – Polígonos
  • geom_qq_line() – Um gráfico quantil-quantil
  • geom_quantile() – Regressão quantílica
  • geom_raster() – Retângulos
  • geom_ribbon() – Fitas e gráficos de área
  • geom_rug() – Parcelas de tapete nas margens
  • geom_segment() – Segmentos de linhas e curvas
  • geom_smooth() – Meios condicionais suavizados
  • geom_spoke() – Segmentos de linha parametrizados por localização, direção e distância
  • geom_violin() – Trama de violino