Análise de Dados em R (FNDE) - Módulo 1

Sessão 5 - Gráficos

Allan Vieira
janeiro de 2018

Objetivos desta Sessão


  • Conhecer algumas funções básicas para gerar gráficos no R;

  • Confeccionar gráficos de dispersão, linhas e barras no R.

Introdução



  • os gráficos do R base não são os mais bonitos, mas dão conta do recado;

  • os ajustes dos elementos gráficos são feitos através dos parâmetros da função utilizada para plotagem - vale a pena ler o help() de cada função;

  • há dezenas (talvez centenas) de pacotes gráficos para produzir gráficos melhores no R como vimos na aula 1 - a internet é o melhor local para conhecê-los;

  • uma das funções mais importantes é a plot() do pacote base. Mostraremos outras, mas normalmente os parâmetros a serem controlados/modificados são os mesmos!!

Scatter plot/ gráfico de dispersão/ gráfico X-Y (1)

# criando dois vetores numéricos
x <- sample(seq(1,1.98, by=0.02))
y <- sample(seq(2,2.98, by=0.02))
# plot simples
plot(x,y)

plot of chunk unnamed-chunk-2

# adicionando titulo
plot(x,y, main="Título")

plot of chunk unnamed-chunk-3

# adicionando subtitulo
plot(x,y, main="Título \n Subtítulo")

plot of chunk unnamed-chunk-4

Scatter plot/ gráfico de dispersão/ gráfico X-Y (2)

# adicionando Fonte ou subescrito
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU")

plot of chunk unnamed-chunk-5

# mudando os labels dos eixos
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y")

plot of chunk unnamed-chunk-6

# modificando a cor dos pontos
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="red")

plot of chunk unnamed-chunk-7

# aumentando o tamanho do ponto ("character or symbol expansion" - cex)
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="red", cex= 2)

plot of chunk unnamed-chunk-8

Scatter plot/ gráfico de dispersão/ gráfico X-Y (3)

# modificando o tipo de ponto
# pch = plotting character
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="red", cex= 2, pch='|')

plot of chunk unnamed-chunk-9

plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="red", cex= 2, pch='.')

plot of chunk unnamed-chunk-10

plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="red", cex= 2, pch='p')

plot of chunk unnamed-chunk-11

plot(x,y, main="Título", sub="Fonte: EU", xlab = "eixo x", ylab = "eixo y",
     col="red", cex= 2, pch='a')

plot of chunk unnamed-chunk-12

Scatter plot/ gráfico de dispersão/ gráfico X-Y (4)

# ainda modificando o tipo de ponto
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="red", cex= 2, pch='5')

plot of chunk unnamed-chunk-13

# usando pch numerico - para outros símbolos
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="red", cex= 2, pch=2)

plot of chunk unnamed-chunk-14

plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="red", cex= 2, pch=3)

plot of chunk unnamed-chunk-15

# para preencher os círculos: pch=16
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="red", cex= 2, pch=16)

plot of chunk unnamed-chunk-16

Scatter plot/ gráfico de dispersão/ gráfico X-Y (5)

# diferenciando ptos de acordo com um grupo existente
# criando fator -- vetor com variável categórica
banco <- factor(rep(c("CEF","BB"), each=25))
# ajustamos o parametro col para apontar para o vetor tipo_estudante
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y",
     col=banco, cex= 2, pch=16)

plot of chunk unnamed-chunk-18

# vamos especificar as cores de caixa - azul e banco do brasil - amarelo
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y",
     col=c("blue","yellow")[banco], cex= 2, pch=16)
# o R atribui automaticamente as cores para cada fator !!

plot of chunk unnamed-chunk-19

Scatter plot/ gráfico de dispersão/ gráfico X-Y (6)

# podemos ainda acrescentar uma legenda ao gráfico com a função legend()
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y",
     col=c("blue","yellow")[banco], cex= 2, pch=16)
legend(x="topright", legend = levels(banco), col=c("blue","yellow"),
       pch=16)

plot of chunk unnamed-chunk-20

# adicionando linha ao gráfico de dispersão - média da variável y
plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y",
     col=c("blue","yellow")[banco], cex= 2, pch=16)
abline(h = mean(y)) # h de horizontal
abline(v = mean(x)) # v de vertical

plot of chunk unnamed-chunk-21

Scatter plot/ gráfico de dispersão/ gráfico X-Y (7)

plot(x,y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y",
     col=c("blue","yellow")[banco], cex= 2, pch=16)

# adicionando mais pontos ao gráfico:
points(c(1.2, 1.4, 1.8), c(2.2, 2.1, 2.8), col="red", cex=2)

plot of chunk unnamed-chunk-22

Gráficos de linhas (1)

## gráficos de linhas
# note que agora só indicamos um vetor de cada vez para a função plot()!!
plot(x, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="red",type="l")

plot of chunk unnamed-chunk-23

plot(y, main="Título \n Subtítulo", sub="Fonte: EU", xlab = "eixo x",
     ylab = "eixo y", col="blue", type="l")

plot of chunk unnamed-chunk-24

Gráficos de linhas (2)

# colocando mais de uma linha no mesmo gráfico
# antes é necessário criar o grid do gráfico com um range adequado
yrange<-range(c(x,y))
plot(x,type="l",ylim=yrange,col=2)
lines(y,type="l",col=3)
# você pode utilizar o help para alterar as características 
#...das linhas também!!

plot of chunk unnamed-chunk-25

Gráficos de Barras (1)

## gráficos de barras - simples
barplot(x)

plot of chunk unnamed-chunk-26

barplot(y)

plot of chunk unnamed-chunk-27

Gráficos de Barras (2)

# simulando dados
anos <- rep( rep(c("2016","2017"), times=c(17,8)), 2 )
banco <- rep(c("BB", "CEF"), c(36, 14))
df2 <- data.frame(x, y, banco, anos)
# barras EMPILHADAS
freq <- table(df2$banco, df2$anos) # tabela de frequências
# ... mas poderiam ser médias, somas, etc...
barplot(freq, main="Distribuição de alunos por ano e banco",
        xlab="Anos", col=c("darkblue","orange"),
        legend = rownames(freq)) 

plot of chunk unnamed-chunk-29

# barras JUSTAPOSTAS NA VERTICAL
barplot(freq, main="Distribuição de alunos por ano e banco",
        xlab="Anos", col=c("darkblue","orange"),
        legend = rownames(freq), beside = TRUE) 

plot of chunk unnamed-chunk-30

# barras JUSTAPOSTAS NA HORIZONAL E SEM BOX
barplot(freq, main="Distribuição de alunos por ano e banco",
        xlab="Anos", col=c("darkblue","orange"),
        legend = rownames(freq), beside = TRUE, horiz = TRUE) 

plot of chunk unnamed-chunk-31

Gráfico de Pizza

  • Basta passar um vetor de frequências:
pie(c(1,5,7,10))

plot of chunk unnamed-chunk-32

pie(table(df2$banco), col = c("darkblue", "orange"))

plot of chunk unnamed-chunk-33

pie(table(df2$anos), col = c("darkblue", "red"))

plot of chunk unnamed-chunk-34

FIM

Obrigado!!