O R produz praticamente qualquer tipo de gráfico. Entretanto, justamente em relação a este ponto, os códigos podem se tornar bastante complexos. Neste curso veremos como criar as formas gráficas básicas (gráficos de regressão, histogramas, gráficos de barras, pizza, boxplot e a inserção de barras de erro). A forma mais simples de que dispomos para criar um gráfico é utilizando a função plot. Vamos continuar usando os dados do crabs
Primeiro um plot simples de duas variáveis, uma (FL) contra outra (CW), muito útil, como já vimos para examinarmos a correlação entre as variáveis.
library(MASS)
attach(crabs)
plot(FL~CW, data=crabs)
Podemos alterar várias coisas do gráfico como adicionar um título usando main, forma dos pontos com pch, cor com col e plotar grupos diversos com formas diferentes. Por exemplo, no dataset crabs os indivíduos da espécie “B” estão nas linhas 1 a 100 e da espécie “O” nas demais 100. Posso então pedir para colorir os 100 primeiros dados de vermelho usando o comando col (cor) e rep (repetir) para repetir a cor vermelha (“red”) 100 vezes. Depois faço o mesmo para a cor azul, colorindo os demais 100 dados.
plot(FL~CW,data=crabs, pch=c(19),
main="Comprimento do Lobo Frontal",
col=c(rep("green", 100),rep("blue", 100)))
legend("bottomright", c("SpB","SpO"), pch=19, col=c("green", "blue"))
Por outro lado você pode não saber em quais linhas está cada uma das espécies - imagina que elas estivessem alternadas, por exemplo - então eu posso colorir direto dizendo a cor e que fator usar para dar a cor, a figura será exatamente a mesma acima.
plot(FL~CW,data=crabs, pch=c(19),
main="Comprimento do Lobo Frontal",
col=c('green', 'blue')[as.numeric(crabs$sp)])
legend("bottomright", c("SpB","SpO"), pch=19, col=c("green", "blue"))
Interessante notar a não sobreposição dos pontos referentes as duas espécies, formando duas retas (regressão linear) diferentes.
Um histograma da variável Comprimento do Lobo Frontal (FL) vai agrupar as observações em classes de comprimento. Ele pode ser em valores absolutos, isto é no eixo y temos quantas observações pertencem àquela classe, ou por frequência, onde o eixo y representa a proporção dos dados que pertencem a uma determinada classe:
hist(FL, data=crabs)
hist(FL,freq=F, data=crabs)
Para o próximo gráfico vamos usar as médias de machos e fêmeas da variável CW das duas espécies de caranguejos:
mediaSpBMachos<-mean(crabs[1:50,7])
mediaSpBFemeas<-mean(crabs[51:100,7])
mediaSpOMachos<-mean(crabs[101:150,7])
mediaSpOFemeas<-mean(crabs[151:200,7])
mediasCW<-c(mediaSpBMachos,mediaSpBFemeas,mediaSpOMachos,mediaSpOFemeas)
Atente para o fato de que os intervalos selecionados para cada grupo estão entre colchetes e antes da vírgula, correspondendo portanto as linhas, enquanto que as colunas aparecem depois da vírgula. No caso escolhi apenas a coluna 7 que corresponde a variável CW. Lembre-se sempre: [linhas,colunas]
Fazendo um gráfico de barras de CW por espécie e sexo:
barplot(mediasCW)
Ou, embelezando um pouco o gráfico
barplot(mediasCW, main="Médias por espécie por sexo", names.arg=c("B Machos", "B Fêmeas","C Machos", "C Fêmeas"),
ylab="CW", col="blue",las=1, ylim=c(0,50))
Muitas vezes você quer colocar uma barra de erros. Automaticamente isso não é feito no R, apenas em alguns pacotes gráficos. Mas você, sabendo ou calculando qual o valor do erro a ser colocado, pode incluir no seu barplot. No exemplo abaixo, vamos pegar as médias de cada uma das duas espécies de caranguejos por sexo para a variável CW (como já calculamos acima na seção de análise de variância) e vamos também calcular o desvio-padrão de CW para cada uma das espécies da mesma forma:
sdSpBMachos<-sd(crabs[1:50,7])
sdSpBFemeas<-sd(crabs[51:100,7])
sdSpOMachos<-sd(crabs[101:150,7])
sdSpOFemeas<-sd(crabs[151:200,7])
E depois construir um data frame com duas colunas (uma com as médias de CW por espécie e outra com os desvios)
desviosCW<-c(sdSpBMachos, sdSpBFemeas,sdSpOMachos, sdSpOFemeas)
dados<-as.data.frame(cbind(mediasCW, desviosCW))
attach(dados)
Agora vamos plotar as duas médias e acrescentar o parâmetro arrows (qualquer dúvida digite: ?arrows) para acrescentar as barras de erro com as médias mais os desvios (barra para cima) e menos os desvios (barra para baixo)
meu.barplot<-barplot(mediasCW, names.arg=c("B Machos", "B Fêmeas", "O Machos", "O Fêmeas"), ylim=c(0,50))
arrows(meu.barplot,mediasCW+desviosCW,meu.barplot,
mediasCW-desviosCW, length=0.3,angle=90, code=3)
Os tradicionais gráficos de pizza são efetuados com o comando pie
pie(crabs$FL[1:10])
Vamos dar nomes e definir as cores dos elementos de um gráfico de pizza.
pizza<-c(1,2,3)
names(pizza)<-c("um","dois","três")
pie(pizza,col=c("black","red","blue"))
Você pode fazer muito mais utilizando a função:
example(pie)
Dois outros tipos de gráficos, muito úteis quando se trabalha com tabelas de contingência (veja a seção de análise univariada), são:
tabela.qui<-table(survey$Smoke, survey$Exer)
mosaicplot(tabela.qui, xlab="FUMANTE", ylab="ATIVIDADE FÍSICA")
assocplot(tabela.qui, xlab="FUMANTE", ylab="ATIVIDADE FÍSICA")
Você mesmo pode alterar várias coisas no seu gráfico incluindo caixas com legendas, alterando a orientação do texto, tamanho, cor, nomes dos eixos, etc. Muitos preferem fazer as figuras ao seu gosto, mas existem pacotes que fazem gráficos mais “preparados” como o lattice e o ggplot2
Abaixo vamos ver alguns exemplos de gráficos usando o lattice
install.packages("lattice")
library(lattice)
bwplot(FL~sp|sex, data=crabs)
xyplot(FL~sp|sex, data=crabs)
barchart(FL~sp|sex, data=crabs)
Note que o barchart do lattice é similar o barplot que fizemos acima usando os pactoes já incluídos por padrão no R e que ambos fornecem informação semelhante ao interaction.plot que vimos na parte de análise de variância.
O ggplot2 é um pacote com uma estética mais rebuscada e envolve uma linguagem própria, existe inclusive um parâmetro aes (=aesthetic). Entretanto você pode facilmente encontrar scripts para figuras em livros ou simplesmente procurando no google.images a palavra “ggplot” ou “ggplot2” vendo qual figura é a que você gostaria de fazer. Abaixo temos dois exemplos já efetuados, um deles é a versão ggplot2 do nosso meu.biplot.
install.packages("ggplot2")
library(ggplot2)
qplot(FL,CW, data=crabs)
ggplot(crabs, aes(FL,CW, colour=sp)) +geom_point()