Primeiros Passos com ggplot2

Lineu Alberto Cavazani de Freitas


1 Visualização de Dados

Parte primordial de qualquer análise estatística é chamada análise descritiva ou exploratória. Tal etapa consiste basicamente de resumos numéricos e análises gráficas baseadas em conjuntos de dados.

Trata-se de uma etapa de extrema importância e deve preceder qualquer análise mais sofisticada como ajuste de modelos de regressão, por exemplo. Além disso, a análise exploratória não requer elevada proficiência em tópicos avançados de estatística para para aplicação e interpretação dos resultados, fazendo com que visualização de dados caracterize uma técnica simples, com grande apelo visual e extremamente informativa quanto ao conjunto de dados.

No R há a possibilidade de gerar gráficos sem a utilização de pacotes e há também pacotes específicos e especializados em visualização, dentre os quais destacam-se os famosos lattice e ggplot2.

Este post tem como foco explorar as principais e mais simples formas de visualização de dados utilizando o ggplot2 bem como algumas customizações simples como alteração de cores, temas, etc.


2 ggplot2

O ggplot2 é um pacote para geração de gráficos baseado no livro ‘The Grammar of Graphics’. Nele, o usuário fornece os dados, especifica como mapear as variáveis e que tipo de visualização usar. Após isso basta customizar cores, formas e tamanho dos atributos.

Para instalação do pacote basta utilizar a função install.packages(), da seguinte forma:


2.1 Função ggplot()

A principal função do pacote é a ggplot(). Esta função cria um objeto ggplot no qual devem ser declarados os dados e especificar o conjunto de características que vão compor o gráfico.

Leia a documentação da função com o comando:

O primeiro passo para abrir uma janela gráfica no ggplot2 é especificar o data frame no argumento data e, dentro do aes() informar qual variável ficará no eixo x e qual ficará no eixo y. Além disso pode-se acrescentar outras variáveis ao aes() que serão representadas por cores, formas ou tamanhos diferentes.

Apenas o comando acima, declarando corretamente os dados e as variáveis, uma janela gráfica em branco é aberta e , para acrescentar pontos, linhas e formas ao gráfico são utilizados os ‘geoms’ do ggplot. Os geoms disponíveis do pacote são:

##  [1] "geom_abline"     "geom_area"       "geom_bar"       
##  [4] "geom_bin2d"      "geom_blank"      "geom_boxplot"   
##  [7] "geom_col"        "geom_contour"    "geom_count"     
## [10] "geom_crossbar"   "geom_curve"      "geom_density"   
## [13] "geom_density_2d" "geom_density2d"  "geom_dotplot"   
## [16] "geom_errorbar"   "geom_errorbarh"  "geom_freqpoly"  
## [19] "geom_hex"        "geom_histogram"  "geom_hline"     
## [22] "geom_jitter"     "geom_label"      "geom_line"      
## [25] "geom_linerange"  "geom_map"        "geom_path"      
## [28] "geom_point"      "geom_pointrange" "geom_polygon"   
## [31] "geom_qq"         "geom_qq_line"    "geom_quantile"  
## [34] "geom_raster"     "geom_rect"       "geom_ribbon"    
## [37] "geom_rug"        "geom_segment"    "geom_sf"        
## [40] "geom_smooth"     "geom_spoke"      "geom_step"      
## [43] "geom_text"       "geom_tile"       "geom_violin"    
## [46] "geom_vline"

A sintaxe para geração de um gráfico de dispersão simples é:

Pode-se acrescentar mais de um geom ao mesmo gráfico apenas com o acréscimo do sinal de mais (+).

Para verificar os tipos de gráficos mais comuns em análise exploratória e como customizar gráficos com o ggplot2, vamos analisar um conjunto de dados simulados.


3 Gerando um conjunto de dados

Vamos gerar e analisar um conjunto de dados comum, composto por duas variáveis numéricas e uma variável categórica:

##          x        y z
## 1 31.61067 35.11138 a
## 2 46.96268 43.00292 b
## 3 44.18966 42.14678 a
## 4 33.99729 23.37712 b
## 5 46.76924 50.93995 a
## 6 27.92536 37.30418 b

4 Análise com ggplot2

Como o ggplot2 é um pacote, é necessário carregá-lo:


4.1 Densidade

Um gráfico de densidade simples pode ser feito com os seguintes comandos:

Dentro de um geom é possível acrescentar elementos extra para customização dos gráficos, por exemplo: o argumento col altera a cor do contorno, o argumento fill altera a cor de preenchimento e o alpha controla o aspecto de transparência do gráfico. Pode-se também acrescentar um geom_rug():


4.2 Histograma

Para gerar um histograma, basta acrescentar à função ggplot um geom_histogram():

E pode-se incluir as mesmas customizações utilizadas no gráfico de densidade, inclusive ao geom_rug:


4.3 Boxplot

Ainda com foco nas análises univariadas, uma alternativa ao gráfico de densidade e ao histograma é o boxplot:


4.4 Gráficos de dispersão

Para duas variáveis numéricas o gráfico de maior importância é o de dispersão, que pode ser gerado utilizando o geom_point():

Pode-se ainda gerar um gráfico utilizando todas as variáveis do nosso data frame, com uma variável numérica no eixo x, outra no eixo y e com diferentes cores representando a variável categórica, tais atributos são definidos dentro do aes(). Há a possibilidade de adicionar linhas de tendência ao gráfico com o uso do geom_smooth():


4.5 Boxplot para níveis de um fator

Para verificar o comportamento de uma variável categórica nos valores observados de uma variável numérica o boxplot se mostra uma boa alternativa, a diferença do caso já mencionado é que aqui temos uma variável x (fator) e uma variável y (numérica):

E algumas customizações:


4.6 Eixos e título

A atribuição de eixos e títulos faz-se com uso do ggtitle(), xlab() e ylab():


4.7 Facet

O facet_wrap() permite gerar gráficos em que faz-se a distinção entre os níveis de um fator:


5 Outros tipos de gráfico

Além dos gráficos já mencionados, alguns outros são comumentes utilizados em análises exploratórias:

5.1 Gráfico de barras

O gráfico de barras é utilizado quado há interesse em observar frequências. Vamos considerar o seguinte conjunto de dados:

##   fator contagem
## 1     a      125
## 2     b      170
## 3     c      124
## 4     d      128
## 5     e      163

No ggplot2, um gráfico de barras pode ser gerado da seguinte forma:

5.2 Gráfico de setores

Outra alternativa para visualização de frequências é o gráfico de setores, para representação deste gráfico vamos considerar um novo data frame:

E o gráfico de setores pode ser gerado com os comandos:

5.3 Violino

Para confecção deste gráfico utiliza-se o geom_violin(), o gráfico consiste no espelhamento do gráfico de densidade da variável; pode ser utilizado para explorar uma variável numérica ou para verificar o efeito de níveis de um fator sobre uma variável numérica:


6 Temas

O pacote tem uma variedade de temas:

##  [1] "theme_bw"       "theme_classic"  "theme_dark"     "theme_get"     
##  [5] "theme_gray"     "theme_grey"     "theme_light"    "theme_linedraw"
##  [9] "theme_minimal"  "theme_replace"  "theme_set"      "theme_test"    
## [13] "theme_update"   "theme_void"

Para utlizá-los, basta acrescentar + theme_(nome do tema). Alguns são extremamente parecidos. Confira os principais:



7 Gráficos interativos

Com o pacote plotly é possível converter gráficos gerados com ggplot2 em gráficos interativos com o uso da função ggplotly:

7.1 Exemplo 1

7.2 Exemplo 2


8 Considerações finais

O intuito deste material foi explorar a confecção e customização de gráficos fazendo uso do ggplot2. O aprendizado e a própria customização dos gráficos pode ser de certa forma trabalhosa devido às diferenças de sintaxe dos gráficos produzidos no R e às inúmeras possíveis combinações de geoms e parâmetros que controlam a estética dos gráficos. Contudo, o pacote permite a geração de gráficos que, no geral, são mais atrativos visualmente que aqueles gerados utilizando o R base e que, com uso do plotly, são facilmente convertidos para gráficos interativos.