19 dic 2011

Mapa de Colombia en R

library(maptools)
library(ggplot2)
library(lattice)
library(sp)
#El archivo .shp se puede bajar de http://www.gadm.org/country #
xx <- readShapePoly("COL_adm1.shp",IDvar="NAME_1", proj4string=CRS("+proj=longlat +ellps=clrk66"))
mapa<-function(xx,depto,sati)
{
  col<-matrix(NA,ncol=2,nrow=length(depto))
  color<-numeric(length(depto))
  for(i in 1:length(depto)){
  ifelse(sati[i]<73.3,color[i]<-"red", ifelse(sati[i]<85.5, color[i]<-"yellow", color[i]<-"darkgreen"))}
  col[,1]<-depto;col[,2]<-color
  col<-col[order(col[,1]),]
  posi<-numeric(length(depto))
  xxx <-xx[xx$NAME_1 %in%depto,]
  plot(xx,border="gray",col="white",lwd=0.9,asp=0,axes =F, las = 1)
  plot(xxx, border="gray", col=col[,2],lwd=1,asp=0,add=T)
  text(coordinates(xxx), labels=sapply(slot(xxx, "polygons"),function(i) slot(i, "ID")), cex=0.65,font=2, pos=1, col="black")
}
mapa(xx,c("Norte de Santander","Quindío","Bolívar","Santander","Atlántico","Valle del Cauca","Cundinamarca","Antioquia"),c(83,78,76.9,75.6,74.3,73.8,70.1,68.6))

1 comentario :

  1. Hola Andres, queria saber si conoces alguna forma para hacer un mapa demografico, quiero hacer un mapa en donde para el mismo departamento salga algo como " 50% son hombre y 50% mujeres" y por lo tanto se vea el 50% azul y el otro rosado... Queria saber si conoces alguna forma? Muchas gracias.

    ResponderEliminar