8.2 Extensões do pacote ggplot2

O site ggplot2 extensions tem uma galeria com diversos pacotes que deixam o ggplot2 bem mais poderoso, indo de novos geoms até animações.

A seguir, listamos algumas das mais famosas.

8.2.1 gghighlight

O gghighlight é uma extensões do {ggplot2} que serve para realçar partes de um gráfico feito com ggplot.

A seguir, mostramos como utilizar essa extensão para realçar gráficos de pontos e linhas.

Realçando pontos

Muitas vezes temos um gráfico de dispersão em que queremos realçar alguns pontos de acordo com alguma característica. Por exemplo, abaixo estamos realçando os pontos que possuem carat > 4, além disso colocamos uma label em cada um.

diamonds %>% 
  ggplot(aes(x = carat, y = price)) +
  geom_point() +
  gghighlight::gghighlight(carat > 4, label_key = carat)

Também é possível configurar a cor dos pontos que serão realçados e dos que não serão, bem como o estilo das labels.

diamonds %>% 
  ggplot(aes(x = carat, y = price)) +
  geom_point(color = "red") +
  gghighlight::gghighlight(
    carat > 4, 
    label_key = carat,
    unhighlighted_params = list(colour = "black"),
    label_params = list(size = 10, fill = "grey")
  )

Realçando linhas

Com o {gghighlight} também é possível realçar linhas em um gráfico que possui varias linhas. Isso é interessante quando você quer ver como uma série temporal se compara com relação à um conjunto de outras séries.

No gráfico a seguir mostramos o número de downloads de cada um dos pacotes do tidyverse no ano de 2019. Uma das séries se destaca por mudar de padrão no meio do ano. Usamos o {gghighlight} para destacá-la no gráfico.

tab <- cranlogs::cran_downloads(
  packages = tidyverse::tidyverse_deps()$package,
  from = "2019-01-01", to = "2019-12-31"
)

tab %>% 
  ggplot(aes(x = date, y = count, group = package)) +
  geom_line() +
  gghighlight::gghighlight(max(count) > 100000, label_key = package)

Para mais informações sobre o {gghighlight}, recomendamos a leitura da excelente documentação oficial.

8.2.2 ggridges

A extensão {ggridges} é uma ótima alternativa para histogramas e boxplots, quando queremos comparar a distribuição de uma variável A em vários níveis de uma variável B.

Primeiro, instale o pacote.

install.packages("ggridges")

No gráfico abaixo, comparamos a distribuição da receita dos filmes em cada um dos anos de 2005 a 2016. Para isso, utilizamos o novo geom_density_ridges(), disponibilizado pelo pacote {ggridges}.

library(ggridges)
imdb %>%
  filter(ano > 2005) %>% 
  mutate(ano = as.factor(ano)) %>% 
  ggplot(aes(y = ano, x = receita, fill = ano)) +
  geom_density_ridges(na.rm = TRUE, show.legend = FALSE)
## Picking joint bandwidth of 11100000

Você pode baixar a base IMDB utilizada clicando aqui.


Curso-R