Pacote ggplot2

Exemplo de Gráficos
require(tidyverse)
  • conjunto de dados de modelos de carros, ano,potencia etc…:
ggplot2::mpg
  • Atenção - Na linhas de comando múltiplas o “+” deve ser colocado no final da linha de comando. O uso de “Shift+Enter” facilita a separação das linhas de comando para melhor entendimento do script.

  • plotar variáveis hwy e cty

ggplot(data = mpg) +
  geom_point(mapping = aes(x = hwy, y = cty))

  • Classificar por modelo de carro com cores:
ggplot(data = mpg) + 
geom_point(mapping = aes(x = hwy, y = cty, color=class))

  • Classificar com símbolos:
ggplot(data = mpg) +
geom_point (mapping = aes (x = hwy, y = cty, shape = class))
## Warning: The shape palette can deal with a maximum of 6 discrete values
## because more than 6 becomes difficult to discriminate; you have 7.
## Consider specifying shapes manually if you must have them.
## Warning: Removed 62 rows containing missing values (geom_point).

  • Plotar cada gráfico um modelo de carro:
ggplot(data = mpg) + 
  geom_point (mapping = aes (x = hwy, y = cty))+
  facet_wrap(~class, nrow = 2)

  • Com diferentes números de colunas e linhas
ggplot(data = mpg) + 
  geom_point (mapping = aes (x = hwy, y = cty))+
  facet_wrap(~ class, nrow = 4, ncol = 2)

  • Fazer um grid, interagindo em um mesmo gráfico várias variáveis
ggplot(data = mpg) + 
  geom_point (mapping = aes (x = hwy, y = cty))+
  facet_grid(class ~ cyl)

  • Com utilizaçao de outro “geom” ##### Gráfico com linha
ggplot(data = mpg) + 
  geom_smooth (mapping = aes (x = cty, y = hwy))
## `geom_smooth()` using method = 'loess'

  • Separando as linhas em categorias de tração
ggplot(data = mpg) + 
  geom_smooth (mapping = aes (x = cty, y = hwy, linetype = drv))
## `geom_smooth()` using method = 'loess'

  • Separar as linhas com cores
ggplot(data = mpg) + 
  geom_smooth (mapping = aes (x = hwy, y = displ, color = drv))
## `geom_smooth()` using method = 'loess'

  • Exibindo dois tipos de “geom” no mesmo gráfico
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = hwy, y = cty)) +
  geom_smooth(mapping = aes(x = hwy, y = cty))
## `geom_smooth()` using method = 'loess'

  • Para reduzir o comprimento do código é possível descrever o conjunto de dados na primeira linha de comando, não sendo necessário reescrever nas linhas seguintes
 ggplot(data = mpg, mapping = aes(x = hwy, y = cty)) +
  geom_point() +
  geom_smooth()
## `geom_smooth()` using method = 'loess'

  • Caso queira classificar deve-se escrever na linha de comando referente ao tipo de “geom”
ggplot(data = mpg, mapping = aes(x = hwy, y = cty)) +
  geom_point(mapping = aes(color = class)) +
  geom_smooth()
## `geom_smooth()` using method = 'loess'

  • Casos especiais - selecionar apenas uma categoria com a utlização do filter()
  • “se =” representa o intervalo de confiaça da do geom_smooth
 ggplot(data = mpg, mapping = aes(x = hwy, y = cty)) + 
  geom_point(mapping = aes(color = class)) + 
  geom_smooth(data = filter(mpg, class == "suv"), se = FALSE)
## `geom_smooth()` using method = 'loess'

  • Geom_bar plota a frequencia dos valores x
  • No exemplo abaixo está demonstrando a quantidade de diamantes em cada categoria de qualidade. OBS.: Embora nos dados originais de diamonds não há a coluna count, o geom_bar consegue calcular esses valores.
 ggplot(data = diamonds) +
  geom_bar(mapping = aes(x= cut)
)

  • A mesma ação é realizada pela função stat_count, como no exemplo abaixo:
ggplot(data = diamonds) +
  stat_count(mapping = aes(x= cut))

  • Além da contagem, podemos utilizar também o cálculo de proporção de cada categoria dequalidade
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))

  • Para plotar barras que representem dados que estão presentes na matriz de dados, deve-se utilizar geom_col:
ggplot(data = diamonds) +
geom_col(mapping = aes(x= cut, y = depth))

  • Agora, para melhor visualização dos dados, podemos trabalhar com as funções gráficas de cor.
ggplot(data = diamonds) +
  geom_bar(mapping = aes(x = cut, fill = cut))

  • Vejam que cada categoria ficou relacionado com uma cor. Pois bem, e se quisermos classificar com cores alguma variável dentro de da variável “cut”? Vamos plotar então a claridade dos diamantes dentro de cada categoria de “cut”
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity))

  • O empilhamento ajusta a posição aumtomanticamente… assim se não quer gerar um empilhamento podemos determinar outros valores no argumento “position” -> identity, dodge ou fill.
ggplot(data = diamonds, mapping = aes(x = cut, colour = clarity)) +
  geom_bar(fill = NA, position = "identity") # é necessário tornar as barras mais transparente, definindo preenchimento = NA, pois há sobreposição das subcategorias de claridade

  • Agora com dodge, que gera várias colunas menores para cada coluna principal:
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = color), position = "dodge")

  • Com o uso do “fill”, há um ajuste nas barras, fazendo com que seja possível a comparação da proporção de cada subcategoria:
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = color), position = "fill")

  • Há certas ocasiões onde se faz necessário inverter os eixos x e y, principalmente quando os nomes dos pontos do eixo x se sobrepõe. Para isso utiliza-se o comando “coord_flip()”
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
  geom_boxplot() # Normal

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
  geom_boxplot() +
  coord_flip() # Com troca de eixos

Exemplo práticos resumidos retirados do livro R for Data Science

Rafael Henrique Pertille