Gráfico de círculos

December 14, 2011
By

This post was kindly contributed by Anotações R Statistical Computing - go there to comment and to read the full post.

Elaborei um gráfico para a representação do número relativo de observações por categoria de determinadas variáveis registradas em diferentes pontos de coleta. No exemplo abaixo, eu tenho o número de embarcações observadas por classe de comprimento total nos municípios de São Paulo (dados são fictícios).

Nesta rotina a relativização é feita por ponto de coleta (município).

Dados (fictícios)

Município 0 ˫ 6 6 ˫ 9 9 ˫ 12 12 ˫ 15 15 ˫ 18 ≥ 18
Ubatuba 37 46 7 7 0 0
Caraguatatuba 41 41 15 2 0 0
Ilhabela 50 39 9 0 0 0
São Sebastião 43 40 14 1 0 0
Bertioga 0 52 28 18 0 0
Santos/Guarujá 6 27 16 16 4 28
São Vicente 75 12 12 0 0 0
Praia Grande 60 39 0 0 0 0
Mongaguá 16 83 0 0 0 0
Itanhaém 0 85 14 0 0 0
Peruíbe 31 43 25 0 0 0
Iguape 38 60 0 0 0 0
Ilha Comprida 66 34 0 0 0 0
Cananéia 34 40 10 11 2 0
Total 497 641 150 55 6 28


# importa dados da área de transferência
dat.graf <- t(read.delim("clipboard",dec=",",row.names=1))
dat.graf

# indica o valor da variáveis que serão utilizadas
NCATY<-nrow(dat.graf)
NCATX<-ncol(dat.graf)
MARX<-10 # margem da abcissa
MARY<-5 # margem da ordenada
CIRC<-13 # tamanho máximo do círculo
COR<-"blue" # cor do círculo

# plota o gráfico
par(mar=c(MARX,MARY,2,2))
plot(c(1:NCATX),rep(0,NCATX),xlab="",ylab="",
xaxp=c(1,NCATX,NCATX-1),yaxp=c(1,NCATY+1,NCATY),
ylim=c(0,NCATY+1),xaxt="n",yaxt="n",type="n")
axis(1,at=c(1:NCATX),labels=colnames(dat.graf),las=2,cex.axis=1.5)
axis(2,at=c(1:NCATY),labels=rownames(dat.graf),las=2,cex.axis=1.5)
for (x in 1:NCATX) {
  for(y in 1:NCATY) {
    points(x,y,col=COR,pch=19,cex=dat.graf[y,x]*CIRC/sum(dat.graf[,x]))
  }
}

# caso a última linha da tabela seja uma totalização e deva ficar em destaque.
abline(v=NCATX-0.5,lty=2)

















-------------

Algumas pessoas tiveram problemas com a visualização, compreensão e inserção do símbolos matemáticos de indicação dos intervalos de classe.
6 ˫ 9, 6 |- 9, [6,9[ ou [6,9) indica um intervalo de classe que inclui o limite inferior (6) e exclui o superior (9)
No Linux Ubuntu a forma correta de indicar o símbolo "|-" (˫) é Shift+Ctrl+U 02EB e o código para ">=" (≥) é Shift+Ctrl+U 2265, , como podemos ver na figura.
Dependendo no navegador e do sistema operacional estes símbolos podem não ser visualizados corretamente no blog.
Caso os símbolos matemáticos e as acentuações não sejam corretamente importados pelo R através área de transferência (clipboard) podemos gravar a tabela de dados e importa-la como comando read.csv.
Se mesmo assim os probelmas continuarem podemos re-escrever os nomes de colunas e linhas com colnames e rownames:
colnames(dat.graf)
colnames(dat.graf)[4]<-"São Sebastião"
colnames(dat.graf)[6]<-"Santos/Guarujá"
rownames(dat.graf)
rownames(dat.graf)<-c("0 ˫ 6","6 ˫ 9","9 ˫ 12","12 ˫ 15","15 ˫ 18","≥ 18")

Tags: , , , , , , , , , , , , ,

Comments are closed.