O pacote ggplot foi desenvolvido por Hadley Wickham a partir de sua tese de doutorado “The Grammar of Graphics”. Construíremos gráficos a partir de cada um dos seus componentes. A gramática vem das múltiplas camadas de um gráfico.

Para começar, vamos instalar e carregar o pacote ggplot2 (o ggplot 2 está dentro do tidyverse. Portanto, vc pode instalar e carregar o tidyverse que automaticamente carregará o ggplot2.)

#install.packages{"ggplot2"}
library(ggplot2)

Além disso, vamos usar um conjunto de dados que já está carregado no R (aprenderemos a importar dados nas próximas aulas). Para carregar os dados que iremos usar:

data("mtcars")

Trata-se de um banco de dados com características de diferentes modelos de automóveis. Consiste de dados com 32 observações em 11 variáveis (numéricas), descritas abaixo:

mgp: milhas/galão (EUA)

cyl: Número de cilindros

disp: Deslocamento (cu.in.)

hp: Potência bruta

drat: Relação do eixo traseiro

wt: Peso (1000 lbs)

qsec: 1/4 milha hora

vs: Motor (0 = em forma de V, 1 = em linha reta)

am: Transmissão (0 = automático, 1 = manual)

gear: Número de marchas para frente

carb: Número de carburadores

Para visualizar as primeiras linhas deste banco de dados, podemos usar o comando head:

head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Para construir um gráfico usando ggplot, vamos partir do princípio que os gráficos são constituídos por camadas (layers).

Para ver como funciona, vamos fazer o exemplo abaixo, relacionando consumo, potência e tipo de câmbio:

# Inicia o plot
g <- ggplot(mtcars)
# Adicionar pontos (geom_point) e
# vamos mapear variáveis a elementos estéticos dos pontos
# Size = 3 define o tamanho de todos os pontos
g <- g +
geom_point(aes(x = hp, y = mpg, color = factor(am)),
size = 3)
# Altera a escala de cores
g <- g +
scale_color_manual("Automatic",
values = c("red", "blue"),
labels = c("No", "Yes"))
# Rótulos (títulos)
g <- g +
labs(title = 'Relação entre consumo, potência e tipo de câmbio',
y = 'Consumo',
x = 'Potência')
g

Vamos analisar o código que usamos para fazer o gráfico acima

Primeiro, passamos um conjunto de dados para o ggplot usando ggplot(mtcars)

Depois, adicionamos uma camada de pontos, para as variáveis hp e mpg, com as posições de cada ponto nos eixos x e y e uma variável am para a cor de cada ponto

geom_point(aes(x = hp, y = mpg, color = factor(am)), size = 3) + scale_color_manual(“Automatic”, values = c(“red”, “blue”), labels = c(“No”, “Yes”))

Em seguida, alteramos a escala de cor, definindo seu título, os rótulos (labels) e os valores (values) para as cores. Por fim, definimos os títulos/rótulos do gráfico.

ggplot(mtcars) +
geom_point(aes(x = hp, y = mpg, color = factor(am)),
size = 3) +
scale_color_manual("Automatic",
values = c("red", "blue"),
labels = c("No", "Yes")) +
labs(title = 'Relação entre consumo, potência e tipo de câmbio',
y = 'Consumo',
x = 'Potência')

Todo gráfico tem 3 conjuntos de elementos: I) conjunto de dados (data) II)Sistema de coordenadas (mapping) III) conjunto de figuras geométricas que caracteriza o gráfico (geom)


Mapeamento Estético: características visuais dos objetos geométricos (pontos, barras, linhas, etc). Usamos pra isso a função aes(). No nosso exemplo, usamos 3 características visuais : posição x, posição y e cor.

Objetos geométricos começam com a expressão geom_ e serão seguidos pelo tipo de objeto. Abaixo alguns exemplos:

Dispersão: geom_point()

Barras: geom_bar()

Histograma: geom_histogram()

Boxplot: geom_boxplot()

Densidade: geom_density()

Linhas: geom_line()

NOTE QUE AS CAMADAS SÃO UNIDAS COM UM SINAL DE +

Vamos treinar criando um novo gráfico de dispersão (pontos) para o nosso conjunto de dados. Podemos acrescentar uma terceira camada ao gráfico, gerando a reta y = x. se = false RETIRA O intervalo de confiança. Vejamos.

g1 <- ggplot(mtcars, aes(y = mpg, x = disp)) +
geom_point()+geom_smooth(se = FALSE, method = "lm")
g1
## `geom_smooth()` using formula 'y ~ x'

Agora vejamos como fica com o intervalo de confiança:

g1 <- ggplot(mtcars, aes(y = mpg, x = disp)) +
geom_point()+geom_smooth(method = "lm")
g1
## `geom_smooth()` using formula 'y ~ x'

Podemos também mudar as cores dos pontos. Basta escolher a cor em geom_point(color=red). Vejamos:

g3 <- ggplot(mtcars, aes(y = mpg, x = disp)) +
geom_point(color = 'red')+geom_smooth(se = FALSE, method = "lm")
g3
## `geom_smooth()` using formula 'y ~ x'

Podemos também ter diferentes cores para diferentes categorias de cilindros (variável cyl do banco de dados). Vejamos:

mtcars$cyl=as.factor(mtcars$cyl)
g4 <- ggplot(mtcars, aes(y = mpg, x = disp)) +
geom_point(aes(color=cyl))
g4

Ou diferentes formas para diferentes categorias de cilindros (grupos):

g5 <- ggplot(mtcars, aes(y = mpg, x = disp)) +
geom_point(aes(shape = cyl, color=cyl))
g5

Também é possível modificar a forma e o tamanho do ponto. Vejamos:

g6 <- ggplot(mtcars, aes(y = mpg, x = disp)) +
geom_point(shape=8, color='steelblue', size=5)
g6

Para mudar o preenchimento da figura usamos fill:

g7 <- ggplot(mtcars, aes(y = mpg, x = disp)) +
geom_point(shape=23, fill = "blue", color='darkred', size=3)
g7