Aula 5 Objetivos

  • Converta quadros de dados para gráficos usando ggplot2

gg = Grammar of Graphics

  • data (nosso data.frame!)
  • geometry (points, lines, bars)
  • aesthetics (color, shape, size)
  • scales (mapeando data aos colors)

Básicos

  • Podemos 'pipe' qualquer data.frame para ggplot()
    • Isso inicia um gráfico, mas sem conteúdo
    • Depois, precisamos '+' cada layer/atributo do gráfico
    • Cada layer é um geom
  • Cada linha será um objeto (ponto…) em nosso gráfico
    • As vezes precisamos usar spread ou gather para definir uma unidade/linha apropriada
  • Cada coluna esta acessível para definir posição, cor, forma etc.
    • Especificamos atributos fixos direitamente no geom()
    • Especificamos atributos que variam dependendo dos dados no geom(aes())

Exemplo

flights %>% ggplot() + 
  geom_point(aes(x=dep_time,y=dep_delay))

Exemplo

flights %>% ggplot() + 
  geom_point(aes(x=dep_time,y=dep_delay), color="blue")

Exemplo

flights %>% ggplot() + 
  geom_point(aes(x=dep_time,y=dep_delay, color=origin))

Exemplo

flights %>% ggplot() + 
  geom_point(aes(x=dep_time,y=dep_delay, shape=origin))

Muitos parâmetros

Tipos de Layers

  • Gráficos com uma variável:
    • define apenas x
    • geom_density
    • geom_histogram
    • geom_bar (com o count de dados discretos)

Tipos de Layers

  • Gráficos com uma variável:
    • define apenas x
flights %>% ggplot() + 
  geom_histogram(aes(x=dep_time))

Tipos de Layers

  • Gráficos com dois variáveis:
    • define x e y
    • geom_point (scatterplot)
    • geom_col (um discreto, um contíinuo)

Tipos de Layers

  • Gráficos com dois variáveis:
    • define x e y
flights %>% group_by(origin) %>%
  summarize(avg_delay=mean(dep_delay,na.rm=TRUE)) %>% 
  ggplot() + 
  geom_col(aes(x=origin,y=avg_delay))

Tipos de Layers

  • Gráficos com dois variáveis:
    • define x e y
flights %>% filter(carrier %in% c("UA","AA","DL")) %>%
  group_by(origin,carrier) %>%
  summarize(total_delay=sum(dep_delay,na.rm=TRUE)) %>% 
  ggplot() + 
  geom_col(aes(x=origin,y=total_delay,fill=carrier), position="fill")

Tipos de Layers

  • Gráficos com três variáveis:
    • define x e y e mais uma
    • geom_line (define color)
    • geom_text (define label)
    • geom_tile (define fill)

Tipos de Layers

  • Gráficos com três variáveis:
    • define x e y e mais uma
flights %>% ggplot() + 
  geom_text(aes(x=dep_time,y=distance,label=dest))

Tipos de Layers

  • Gráficos com três variáveis:
    • define x e y e mais uma
flights %>% group_by(origin,month) %>%
  summarize(avg_delay=mean(dep_delay,na.rm=TRUE)) %>%
  ggplot() + 
  geom_line(aes(x=month,y=avg_delay,color=origin))

Tipos de Layers

  • Gráficos com três variáveis:
    • define x e y e mais uma
flights %>% group_by(origin,hour) %>%
  summarize(flights=n()) %>%
  ggplot() + 
  geom_tile(aes(x=hour,y=origin,fill=flights))

Faceting

  • Com três (ou mais) variáveis podemos usar um variável para definir vários gráficos:
    • define um gráfico com geom_...
    • adicione um facet_grid com o variável que muda entre gráficos
flights %>% group_by(origin,month) %>%
  summarize(avg_delay=mean(dep_delay,na.rm=TRUE)) %>%
  ggplot() + 
  geom_line(aes(x=month,y=avg_delay)) +
  facet_grid(.~origin)

Linhas de Regressão

flights %>% ggplot() + 
  geom_point(aes(x=dep_time,y=dep_delay)) +
  geom_smooth(aes(x=dep_time,y=dep_delay), method="lm")

Linhas de Regressão

flights %>% ggplot() + 
  geom_point(aes(x=dep_time,y=dep_delay)) +
  geom_smooth(aes(x=dep_time,y=dep_delay), method="loess")

Visualizando Estimativas de Regressão

flights %>% zelig(dep_delay~dep_time + day + minute, data=., model="ls") %>% 
  from_zelig_model() %>% 
  summary() %>% 
  coefficients() %>%
  as.data.frame() %>%
  rownames_to_column() %>%
  as.tibble(rownames=NA) %>%
  filter(rowname!="(Intercept)") %>%
  mutate(Conf.lo=Estimate-1.96*`Std. Error`,Conf.hi=Estimate+1.96*`Std. Error`) %>% 
  ggplot() +
  geom_point(aes(x=rowname,y=Estimate)) +
  geom_errorbar(aes(x=rowname,ymin=Conf.lo,ymax=Conf.hi)) +
  geom_hline(yintercept=0,color="red",lty=2)

Visualizando Estimativas de Regressão

Scales

  • Como representamos cores que dependem dos dados?
Tipo de dados Color (point, line) Fill (area)
Continuo scale_color_gradient(low="color1",high="color2") scale_fill_gradient(low="color1",high="color2")
Discreto scale_color_brewer(palette="pre-definido") scale_fill_brewer(palette="pre-definido")

Scales

flights %>% group_by(origin,month) %>%
  summarize(avg_delay=mean(dep_delay,na.rm=TRUE)) %>%
  ggplot() + 
  geom_line(aes(x=month,y=avg_delay,color=origin)) + 
  scale_color_brewer(palette="Dark2")

Scales

flights %>% ggplot() + 
  geom_text(aes(x=dep_time,y=arr_time,label=dest)) +
  scale_color_gradient(low="yellow",high="red")

Layers de formatação

  • + theme_classic() - remova as linhas de grade e o fundo
  • + xlab(), + ylab() - labelas para os eixos
  • + ggtitle() - o título

Layers de formatação

flights %>% ggplot() + 
  geom_point(aes(x=dep_time,y=dep_delay, color=origin)) +
  theme_classic() +
  xlab("Departure Time") +
  ylab("Departure Delay") +
  ggtitle("Delays by Departure Time and Airport Origin")

Interactive charts

library(plotly)
plot <- flights %>% ggplot() + 
  geom_point(aes(x=dep_time,y=dep_delay, color=origin)) +
  theme_classic()

plot %>% ggplotly()

Animations

library(plotly)
plot <- flights %>% ggplot() + 
  geom_point(aes(x=dep_time,y=dep_delay, color=origin, frame=month)) +
  theme_classic() %>%

plot %>% ggplotly()