Introdução GGplot Parte 1

Entendendo a sintaxe GGPLOT

Diferente dos gráficos de base, o ggplot usa quadros de dados e não vetores individuais. Todos os dados necessários para fazer o gráfico geralmente estão contidos no quadro de dados fornecido ao ggplot() próprio ou podem ser fornecidos aos respectivos geoms.

O segundo recurso perceptível é que você pode continuar aprimorando a plotagem adicionando mais camadas (e temas) a uma plotagem existente criada usando a ggplot() função.

# Setup
options(scipen=999)  # turn off scientific notation like 1e+06
library(ggplot2)
data("midwest", package = "ggplot2")  # load the data
# midwest <- read.csv("http://goo.gl/G1K41K") # alt source 

# Init Ggplot
ggplot(midwest, aes(x=area, y=poptotal))  # area and poptotal are columns in 'midwest'

Um ggplot em branco é desenhado. Mesmo que o x e y são especificados, não há pontos ou linhas nele. Isso ocorre porque o ggplot não assume que você quisesse desenhar um gráfico de dispersão ou um gráfico de linhas.

Só informamos ao ggplot qual conjunto de dados usar e quais colunas devem ser usadas para os eixos X e Y.

Observe também que a função aes() é usada para especificar os eixos X e Y. Isso porque qualquer informação que faça parte do dataframe de origem deve ser especificada dentro da função aes().

Gráfico de dispersão simples

Vamos usar uma camada geom chamada geom_point.

library(ggplot2)
ggplot(midwest, aes(x=area, y=poptotal)) + geom_point()

Temos um gráfico de dispersão básico, em que cada ponto representa um município.

Faltam alguns componentes, como o título, rótulos dos eixos e outros. E, além disso, a maioria dos pontos está concentrada na parte inferior da plotagem.

Vamos apenas adicionar uma camada de suavização usando geom_smooth(method=‘lm’). Como method é definido como lm (abreviação de modelo linear ), ele desenha a linha de melhor ajuste.

library(ggplot2)
g <- ggplot(midwest, aes(x=area, y=poptotal)) + geom_point() + geom_smooth(method="lm")  # set se=FALSE to turnoff confidence bands
plot(g)

A linha de ajuste é a azul.

Agora ajeitaremos os limites do eixo Y e vamos focar na metade inferior, para melhorar a visualização dos dados.

Ajustar limites dos eixos X e Y

Os limites dos eixos X e Y podem ser controlados de duas maneiras.

Excluir pontos fora do intervalo

Vai alterar as linhas de ajuste ou a de suavização, e pode ser feito usando xlim()ou ylim()

library(ggplot2)
g <- ggplot(midwest, aes(x=area, y=poptotal)) + geom_point() + geom_smooth(method="lm")  # set se=FALSE to turnoff confidence bands

# Delete the points outside the limits
g + xlim(c(0, 0.1)) + ylim(c(0, 1000000))   # deletes points
## Warning: Removed 5 rows containing non-finite values (stat_smooth).
## Warning: Removed 5 rows containing missing values (geom_point).

# g + xlim(0, 0.1) + ylim(0, 1000000)   # deletes points

Note que o gráfico não foi construído a partir do zero, mas em cima de g. Ocorre, pois o gráfico anterior foi armazenado como g um objeto ggplot, que quando chamado, reproduz o gráfico original. Usando o ggplot, você pode adicionar mais camadas, temas e outras configurações na parte superior deste gráfico.

Note, também, que a linha de melhor ajuste se tornou mais horizontal em comparação com o gráfico original.

Isso ocorre porque, ao usar xlim() e ylim(), os pontos fora do intervalo especificado são excluídos e não serão considerados ao desenhar a linha de melhor ajuste.

Aumentando o zoom

O outro método é alterar os limites dos eixos X e Y, ampliando a região de interesse sem excluir os pontos. Isso é feito usando coord_cartesian().

Vamos armazenar esse gráfico como g1.

library(ggplot2)
g <- ggplot(midwest, aes(x=area, y=poptotal)) + geom_point() + geom_smooth(method="lm")  # set se=FALSE to turnoff confidence bands

# Zoom in without deleting the points outside the limits. 
# As a result, the line of best fit is the same as the original plot.
g1 <- g + coord_cartesian(xlim=c(0,0.1), ylim=c(0, 1000000))  # zooms in
plot(g1)

Como todos os pontos foram considerados, a linha de melhor ajuste não mudou.

Alterar os rótulos de título e eixo

Adicionaremos o título da plotagem e os rótulos para os eixos X e Y. Isso pode ser feito de uma só vez, usando a função labs() com title, x e y argumentos. Outra opção é usar o ggtitle(), xlab()e ylab().

library(ggplot2)
g <- ggplot(midwest, aes(x=area, y=poptotal)) + geom_point() + geom_smooth(method="lm")  # set se=FALSE to turnoff confidence bands

g1 <- g + coord_cartesian(xlim=c(0,0.1), ylim=c(0, 1000000))  # zooms in

# Add Title and Labels
#g1 + labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", caption="Midwest Demographics")

# or

g1 + ggtitle("Area Vs Population", subtitle="From midwest dataset") + xlab("Area") + ylab("Population")

O mesmo gráfico pode ser montado de maneira direta:

# Full Plot call
library(ggplot2)
ggplot(midwest, aes(x=area, y=poptotal)) + 
  geom_point() + 
  geom_smooth(method="lm") + 
  coord_cartesian(xlim=c(0,0.1), ylim=c(0, 1000000)) + 
  labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", caption="Midwest Demographics")

Alterar a cor e o tamanho dos pontos

Podemos mudar a estética de uma camada de geom modificando os respectivos geoms. Vamos mudar a cor dos pontos e da linha para um valor estático.

library(ggplot2)
ggplot(midwest, aes(x=area, y=poptotal)) + 
  geom_point(col="steelblue", size=3) +   # Set static color and size for points
  geom_smooth(method="lm", col="firebrick") +  # change the color of line
  coord_cartesian(xlim=c(0, 0.1), ylim=c(0, 1000000)) + 
  labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", caption="Midwest Demographics")

alterar a cor para refletir categorias em outra coluna

Mudar a cor com base em outra coluna no conjunto de dados de origem (midwest), ela deve ser especificada dentro da função aes().

library(ggplot2)
gg <- ggplot(midwest, aes(x=area, y=poptotal)) + 
  geom_point(aes(col=state), size=3) +  # Set color to vary based on state categories.
  geom_smooth(method="lm", col="firebrick", size=2) + 
  coord_cartesian(xlim=c(0, 0.1), ylim=c(0, 1000000)) + 
  labs(title="Area Vs Population", subtitle="From midwest dataset", y="Population", x="Area", caption="Midwest Demographics")
plot(gg)

Além disso, você pode alterar completamente a paleta de cores.

gg + scale_colour_brewer(palette = "Set1")  # change color palette

Mais dessas paletas podem ser encontradas no pacote RColorBrewer

library(RColorBrewer)
head(brewer.pal.info, 10)
##          maxcolors category colorblind
## BrBG            11      div       TRUE
## PiYG            11      div       TRUE
## PRGn            11      div       TRUE
## PuOr            11      div       TRUE
## RdBu            11      div       TRUE
## RdGy            11      div      FALSE
## RdYlBu          11      div       TRUE
## RdYlGn          11      div      FALSE
## Spectral        11      div      FALSE
## Accent           8     qual      FALSE

Referências

{http://r-statistics.co/Complete-Ggplot2-Tutorial-Part1-With-R-Code.html}

Schmuller, Joseph. Análise Estatística com R - Para leigos - Tradução da 2a edição. Alta Books Editora. 2019.

Oliveira, Paulo; Guerra, Saulo; McDonnell, Robert. Ciência de Dados com R. Introdução.Editora IBPAD. Brasília. 2018. Disponível em: {https://cdr.ibpad.com.br/cdr-intro.pdf}