Cap 2 Gráfico de Barras
Para que serve: O gráfico de barras é uma maneira de resumir a informação de uma variável qualitativa/categórica.
Uma variável é chamada qualitativa, também conhecida como categórica, se seus valores pertencem a uma coleção de classes não superpostas. Exemplos comuns incluem notas de letra de estudante (A, B, C, D ou F), classificação de algo (Baixo, médio ou alto), Sexo (Feminino ou Masculino).
Há vantagem do uso do gráfico de barras sobre o gráfico de pizza quando temos variáveis ordinais ou quando há muitas categorias de análise.
data(mtcars)
mtcars <- within(mtcars, {
am <- factor(am, labels=c('Automático','Manual'))
})
mtcars <- within(mtcars, {
vs <- factor(vs, labels=c('Não','Sim'))
})
par(bg="#fdf6e3")
contagem = table(mtcars$am)
nomes = levels(mtcars$am)
porcent = round(prop.table(contagem)*100,2)
rotulo=paste(nomes," (",porcent,"%",")",sep="")
barras<-barplot(table(mtcars$am), ylab="Frequência", main="Tipo de marcha", col=c("red","blue"))
text(barras, 0, rotulo,cex=1,pos=3,col ="#ffffff")
contagem2 = table(mtcars$vs)
nomes2 = levels(mtcars$vs)
porcent2 = round(prop.table(contagem2)*100,2)
rotulo2=paste(nomes2," (",porcent2,"%",")",sep="")
barras2<-barplot(table(mtcars$vs), ylab="Frequência", main="Tipo", col=c("#003154","#dd4a37"))
text(barras2, 0, rotulo,cex=1,pos=3,col ="#ffffff")
par(bg="#fdf6e3")
library(plotrix)
barpos<-barplot(contagem,main="Gráfico de Barras",col=c("red","blue"))
barlabels(barpos,contagem,col=c("red","blue"))
barpos2<-barplot(contagem2,main="Gráfico de Barras", col=c("#003154","#dd4a37"))
barlabels(barpos2,contagem2,cex=1.3,prop=0.1, col=c("#003154","#dd4a37"))
2.1 Gráficos de Barras “GAP”
library(RColorBrewer)
par(bg="#fdf6e3")
#display.brewer.all()
COR<-brewer.pal(4,"Dark2")
#COR
library(plotrix)
twogrp<-c(rnorm(10)+4,rnorm(10)+20)
gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),
ylab="Group values",main="Gráfico de Barras com um'GAP'")
gap.barplot(twogrp,gap=c(8,16),xlab="Index",ytics=c(3,6,17,20),
ylab="Valores",horiz=TRUE,main="Gráfico de Barras com um'GAP'")
2.2 Barras no ggplot2
library(ggplot2)
ggplot(data=mtcars, aes(x=am)) +
geom_bar(stat="count", fill="steelblue")+
theme_minimal()
#install.packages('RCurl')
library(RCurl)
## Carregando pacotes exigidos: bitops
#X <- read.csv(url("http://some.where.net/data/foo.csv"))
x <- getURL("https://raw.githubusercontent.com/DATAUNIRIO/Base_de_dados/master/Estados.csv")
BaseUF <- read.csv(text=x, header=T, quote="", sep=";",dec = ",")
ggplot(data=BaseUF, aes(x=Regiao_Geografica)) +
geom_bar(stat="count", fill=c("#10c6d3","#0ea5af","#0b8b93","#096c72","#064144"))+
theme_minimal()
2.3 Rótulos das Barras no ggplot2
dados = data.frame(round(prop.table(contagem)*100,2))
dados <- within(dados, {
Var1 <- factor(Var1, labels=c('Automático','Manual'))
})
attach(dados)
dados <- dados[order(Freq),]
detach(dados)
# Fora das Barras
ggplot(data=dados, aes(x=Var1, y=Freq)) +
geom_bar(stat="identity", fill="steelblue")+
geom_text(aes(label=Freq), vjust=-0.3, size=3.5)+
ylab("Frequência") +
xlab("Tipo") +
theme_minimal()
# Dentro das Barras
ggplot(data=dados, aes(x=Var1, y=Freq)) +
geom_bar(stat="identity", fill="#275b70")+
geom_text(aes(label=Freq), vjust=1.6, color="white",size=3.5)+
ylab("Frequência") +
xlab("Tipo") +
theme_minimal()
ggplot(data=BaseUF, aes(x=Regiao_Geografica)) +
geom_bar(stat="count", fill=c("#10c6d3","#0ea5af","#0b8b93","#096c72","#064144"))+
geom_text(stat='count',aes(label=..count..),vjust=1.6, color="white",size=3.5)+
ylab("Frequência") +
xlab("Região Geográfica") +
theme_minimal()
ggplot(data=BaseUF, aes(x=Regiao_Geografica)) +
geom_bar(stat="count", fill=c("#10c6d3","#0ea5af","#0b8b93","#096c72","#064144"))+
geom_text(stat="count",aes(label=..count..),vjust=1.6, color="white",size=3.5)+
ylab("Frequência") +
xlab("Região Geográfica") +
theme_minimal()
ggplot(data=BaseUF, aes(x=Regiao_Geografica)) +
geom_bar(stat="count", fill=c("#10c6d3","#0ea5af","#0b8b93","#096c72","#064144"))+
geom_text(aes(label = round(prop.table(..count..)*100,2), y= ..count.. ), stat= "count", vjust=1.6, color="white",size=5.5) +
labs(y = "Percentual", fill="Regiao_Geografica")
error <- c(9, 6)
# adding error bars
plt<-ggplot(data=dados, aes(x=Var1, y=Freq)) +
geom_bar(stat="identity", fill="#275b70")+
geom_text(aes(label=Freq), vjust=1.6, color="white",size=3.5)+
ylab("Frequência") +
xlab("Tipo") +
theme_minimal()
plt + geom_errorbar(aes(ymin=Freq-error, ymax=Freq+error), width=.1, position=position_dodge(.1))
2.4 Alternativas ao Gráfico de Barras
2.5 Gráficos de pontos “Dotplot” para variáveis discretas.
Descrição. Um gráfico de pontos consiste em pontos de dados plotados em uma escala bastante simples, geralmente usando círculos preenchidos. É um tipo de gráfico utilizado na estatística para conjuntos de dados relativamente pequenos onde os valores se enquadram em uma série de barras discretas (categorias). Um gráfico de pontos é semelhante a um gráfico de barras porque a altura de cada “barra” de pontos é igual ao número de itens em uma categoria específica.
library(plotrix)
x <- rpois(100,10)
dotplot.mtb(x,yaxis=TRUE,main="Dotplot")
2.6 Gráfico com Barras preenchidas com símbolos
Descrição. Produz um gráfico de barras onde cada unidade de ‘barra’ é preenchida com o número de símbolos igual ao tamanho da barra.
set.seed(1001)
bvals <- matrix(rpois(12,20),nrow=3)
b <- symbolbarplot(bvals)
require(ggplot2)
# function
ruler.bar.plot <-function(gg, nn, mjtick =1, mntick = 0.2, mjtickcol = "black", mntickcol = "white"){
seq.list<-list()
for(i in 1:length(gg)){
ystart<-seq(mntick ,gg[i],mntick )
yend<-ystart
xstart<-rep(i-0.45,length(ystart))
xend<-xstart+0.1
nam.val<-c(nn[i],rep(NA,length(ystart)-1))
numb.val<-c(gg[i],rep(NA,length(ystart)-1))
seq.list[[i]]<-data.frame(nam.val,numb.val,xstart,xend,ystart,yend)
}
df<-as.data.frame(do.call(rbind, seq.list))
p <- ggplot(df, aes(nam.val))
p + geom_bar(aes(y=numb.val,fill=nam.val),stat="identity",width=0.5,color=mjtickcol,lwd=1.1) +
geom_segment(aes(x=xstart,y=ystart,xend=xend,yend=yend), color=mjtickcol) +
ylim(c(0,max(gg)+0.5)) + scale_x_discrete(limits= nn) +
geom_hline(yintercept=seq(mjtick,max(gg),mjtick),color=mntickcol,lwd=1.1)+ geom_text(aes (y = numb.val, label = numb.val), vjust= - 1 ) +
guides(fill=FALSE) +
theme_bw()+
theme(axis.title=element_blank(),
axis.text.y=element_blank(),
axis.text.x=element_text(angle=90,face="bold",size=rel(1.5)),
axis.ticks=element_blank(),
panel.background = element_rect(fill = mntickcol),
panel.border=element_blank(),
panel.grid=element_blank(),
legend.position = "none")
}
# human height in inches, ticking done at each 12
htinch <- c(66, 72, 88, 54)
id <- c("A", "B", "C", "D")
ruler.bar.plot(htinch, id, mjtick =12, mntick = 1, mjtickcol = "black", mntickcol = "white")
VV = c(0.13, 0.33, 0.82, 0.46)
LV = c("A", "C", "L", "N")
ruler.bar.plot(VV, LV, mjtick =0.1, mntick = 0.02, mjtickcol = "black", mntickcol = "white")
2.7 Gráfico de Barras Circular
#circular bar plot
library(ggplot2)
#DATA
catg <- c("A", "B", "C", "D", "F", "G")
percent <- c(88, 76, 72, 69, 59, 48)
category <- paste (catg, "-", percent, "%", sep = "")
myd <-data.frame(category,percent)
# converting to factor and applying to
#levels to set proper order of bars
myd$category <-factor(myd$category,levels=rev(myd$category))
# plot
plt <- ggplot(myd, aes(x = category, y = percent,fill = category)) +
geom_bar(width = 0.85, stat="identity") +
coord_polar(theta = "y") +
xlab("") +
ylab("") +
ylim(c(0,100)) +
ggtitle("Gráfico circular") +
geom_text(data = myd, hjust = 1, size = 3, aes(x = category, y = 0, label = category))
plt +
scale_fill_manual(values = c("red1","red4", "green1", "green4", "blue1", "blue4"))+
theme_minimal()+
theme(legend.position = "none", panel.grid.major = element_blank(), panel.grid.minor = element_blank(), axis.line = element_blank(), axis.text.y = element_blank(), axis.text.x = element_blank(), axis.ticks = element_blank())