Exemplo de Gráficos dinamicos

ProfDaviRocha

27 de março de 2019

Introdução

O ggplot2 fornece gráficos muito profissionais. Você pode fazer alteração em praticamente qualquer parte do seu gráfico variando as componentes da gramática dos gráficos. Porém, você pode deixar sua apresentação ainda mais interessante usando o pacote gganimate . Com ele você pode criar uma animação do seu plot no ggplot2.

Será usado aqui o pacote gapminder que contém o dataset gapminder. Veja as 6 primeiras linhas:

library(dplyr)
library(gapminder)
head(gapminder)
## # A tibble: 6 x 6
##   country     continent  year lifeExp      pop gdpPercap
##   <fct>       <fct>     <int>   <dbl>    <int>     <dbl>
## 1 Afghanistan Asia       1952    28.8  8425333      779.
## 2 Afghanistan Asia       1957    30.3  9240934      821.
## 3 Afghanistan Asia       1962    32.0 10267083      853.
## 4 Afghanistan Asia       1967    34.0 11537966      836.
## 5 Afghanistan Asia       1972    36.1 13079460      740.
## 6 Afghanistan Asia       1977    38.4 14880372      786.

Data set gapminder

Nesse dataset tem-se as seguintes variáveis:

glimpse(gapminder)
## Observations: 1,704
## Variables: 6
## $ country   <fct> Afghanistan, Afghanistan, Afghanistan, Afghanistan, ...
## $ continent <fct> Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia, Asia...
## $ year      <int> 1952, 1957, 1962, 1967, 1972, 1977, 1982, 1987, 1992...
## $ lifeExp   <dbl> 28.801, 30.332, 31.997, 34.020, 36.088, 38.438, 39.8...
## $ pop       <int> 8425333, 9240934, 10267083, 11537966, 13079460, 1488...
## $ gdpPercap <dbl> 779.4453, 820.8530, 853.1007, 836.1971, 739.9811, 78...

E o range de anos é de 1952 a 2007:

a<-c(min(gapminder$year),max(gapminder$year))
names(a)<- c('minimo', 'maximo')
a
## minimo maximo 
##   1952   2007

Gráfico no ggplot2

Abaixo está o gráfico estático das variáveis PIB per Capita(gdpPercap) e Expectativa de vida(lifeExp) usando o ggplot. O tamanho do circulo varia com o tamanho da população e as cores de acordo com o país:

 library(ggplot2)
 library(gifski)
 theme_set(theme_bw())
 p <- ggplot(gapminder, aes(x = gdpPercap, y=lifeExp, size = pop, colour = country)) + geom_point(show.legend = FALSE, alpha = 0.7) +
   scale_color_viridis_d() + scale_size(range = c(2, 12)) +    scale_x_log10() +
   labs(x = "GDP per capita", y = "Life expectancy")+ ggtitle("GDP per capita x Life expectancy")
 p

Perceba que fica difícil analisar como cada país/continente varia nos anos.

Gráficos Animados

O gráfico anterior é estático e dificulta a comparação entre os países, logo, para deixar o gráfico ainda mais dinâmico, será usado pacote gganimate. Assim será possível visualiar melhor as diferenças entre países:

 library(gganimate)
 p + transition_time(year) +
   labs(title = "Year: {frame_time}")

Muito legal, não é! Pode-se ainda melhorar. Imagine que você queira mostrar a variação entre os continentes.

Separando a visualização por continentes

Usando o comando facet_wrap do ggplot2 pode-se separar os continentes e comparar como cada um variou ao longo desses anos

p + facet_wrap(~continent) +
   transition_time(year) +
 labs(title = "Year: {frame_time}")

Muito legal!Observe que há muitas possibilidades e variações do que fiz aqui, afinal você pode usar toda a versatilidade do ggplot2 e ainda combinar com o gganimate!

Keep calm and analysing data!