O R é um programa livre multiplataforma para análises estatísticas que pode ser baixado em seu site ou adicionado na lista de repositórios de máquinas linux. Suas possibilidades de aplicação em diversas áreas são praticamente ilimitadas.
Neste blog postarei o resultado de minha experiência em sua utilização nas áreas de dinâmica de populações de peixes, ciência pesqueira e ecologia.
As postagens deste blog se destina, além de mim mesmo, a iniciantes no R e alunos da minha área de atuação.
Aprendi muito em livros e nas listas de discussão R-help e a R_STAT, mas ainda tenho muito pela frente. Agradeço desde já qualquer contribuição.
Mostrando postagens com marcador barplot. Mostrar todas as postagens
Mostrando postagens com marcador barplot. Mostrar todas as postagens

quarta-feira, 4 de abril de 2012

Gráfico de barras com erro padrão

São muitas as opções para se fazer um gráfico de barras com a indicação do erro padrão (ou outra medida de dispersão) no R. Com uma rápida busca na rede pode-se ter dezenas de sugestões. Eu resolvi contribuir com mais uma.
Meu objetivo era representar a variação da densidade de algumas espécies medida em períodos noturnos e diurnos.
A partir de três tabelas, uma contendo as médias, outra o erro padrão e uma terceira com o número de observações, utilizo os comandos barplot, points, arrows e text para gerar o gráfico desejado.
Os dados das tabelas são copiados para o R pelo comando read.delim (clique aqui para mais detalhes) e transformados em matrizes pelo comando as.matriz.

Médias


SP1 SP2 SP3 SP4
D 10 12 15 20
N 20 15 12 10

Erros padrões


SP1 SP2 SP3 SP4
D 1 2 3 4
N 3 2 1 5

Número de observações


SP1 SP2 SP3 SP4
D 30 40 35 10
N 20 50 20 27

# copia os dados das tabelas para o R
means <- as.matrix(read.delim("clipboard",row.names=1))
se <- as.matrix(read.delim("clipboard",row.names=1))
n <- as.matrix(read.delim("clipboard",row.names=1))
 

# calcula a amplitude da variação do erro
se.sup<-means+se
se.inf<-means-se


# desenha o gráfico

bp<-barplot(means,beside=T,ylim=c(0,max(se.sup*1.15)),
ylab="densidade",legend.text=c("Diurno","Noturno"),
args.legend=list(x = "topleft", bty="n"))
points(bp,means,pch=19)
arrows(bp,se.sup,bp,se.inf, code=3,angle=90,length=0.05)
text(bp,se.sup+1,n)


 




terça-feira, 6 de setembro de 2011

Dicas para Barplot

Apresento aqui mais algumas dicas para a barplots. Sobre barplots veja também esta postagem.

Tabela exemplo:


G1 G2 G3
Local C 3 30 70
Local B 10 80 30
Local A 50 15 5

# gráfico de barras simples
dados<- read.delim("clipboard",row.names=1)
barplot(as.matrix(dados), ylim=c(0,140),
xlab="grupos",ylab="nº de viagens",
legend.text=row.names(dados),
args.legend=list(x = "topleft", bty="n"))
box()

para transpor a matriz:  t(as.matrix(dados))
para obter a frequência relativa: prop.table(as.matrix(dados),2)
para barras justapostas: beside=T
para barras horizontais: horiz=T
adiciona uma linha abaixo das barras (Opção ao box): axis.lty=1


















terça-feira, 26 de outubro de 2010

Gráfico de barras com números sobre as barras

Para fazer um gráfico de barras com a produção descarregada de diversas frotas e indicar o número de unidades produtivas sobre cada barra utilizei as funções barplot e text. O interessante é que ao criarmos um objeto com o barplot (bp <- barplot(...)) obtemos os pontos médios de cada barra. Assim podemos utilizar estes valores para posicionar corretamente as legendas sobre as barras com text. O comando par(mar=..) indica as margens do gráfico.

Copiando os dados abaixo do clipboard temos:
CAT Prod UP
Petrecho 1 17,5 9
Petrecho 2 15,2 20
Petrecho 3 10,3 500
Petrecho 4 8,4 150
Petrecho 5 20,3 900
dados <- read.delim("clipboard",dec=",",header=T)
barras <- data.frame(dados[,c(2)])
rownames(barras)<-dados[,1]
names(barras)<-c("Prod")
barras 

Prod
Petrecho 1 17,5
Petrecho 2 15,2
Petrecho 3 10,3
Petrecho 4 8,4
Petrecho 5 20,3
   
par(mar=c(12,6,3,2),cex.axis=1.2,cex.lab=1.4)
bp<-barplot(t(as.matrix(barras)),ylim=c(0,max(dados[,2]*1.1)),las=2,ylab="Produção descarregada (t)",col="orange")
box()
text(bp,barras[,1],dados[,3],col="blue",pos=3)