48 votos

Desarrollar Geographic Mapas temáticos con R

Hay claramente un número de paquetes en R para todo tipo de análisis espacial. Que puede verse en el CRAN Vista de Tareas: el Análisis de Datos Espaciales. Estos paquetes son numerosos y diversos, pero todo lo que quiero hacer es algo simple de mapas temáticos. He de datos con las del condado y del estado de los códigos FIPS y he de forma ESRI en los archivos del condado y límites del estado, y el acompañamiento de los códigos FIPS que permite unirse con los datos. La forma de los archivos pueden ser fácilmente convertidos a otros formatos, si es necesario.

Así que ¿cuál es la más sencilla para crear mapas temáticos con R?

Este mapa parece que fue creado con un ESRI Arc producto, pero este es el tipo de cosas que me gustaría hacer con R:

alt text Mapa copiado de aquí.

51voto

Eduardo Leoni Puntos 4470

El siguiente código me ha servido bien. Personalizar un poco y ya está. texto alternativo

 library(maptools)
substitute your shapefiles here
state.map <- readShapeSpatial("BRASIL.shp")
counties.map <- readShapeSpatial("55mu2500gsd.shp")
## this is the variable we will be plotting
counties.map@data$noise <- rnorm(nrow(counties.map@data))
 

función de mapa de calor

 plot.heat <- function(counties.map,state.map,z,title=NULL,breaks=NULL,reverse=FALSE,cex.legend=1,bw=.2,col.vec=NULL,plot.legend=TRUE) {
  ##Break down the value variable
  if (is.null(breaks)) {
    breaks=
      seq(
          floor(min(counties.map@data[,z],na.rm=TRUE)*10)/10
          ,
          ceiling(max(counties.map@data[,z],na.rm=TRUE)*10)/10
          ,.1)
  }
  counties.map@data$zCat <- cut(counties.map@data[,z],breaks,include.lowest=TRUE)
  cutpoints <- levels(counties.map@data$zCat)
  if (is.null(col.vec)) col.vec <- heat.colors(length(levels(counties.map@data$zCat)))
  if (reverse) {
    cutpointsColors <- rev(col.vec)
  } else {
    cutpointsColors <- col.vec
  }
  levels(counties.map@data$zCat) <- cutpointsColors
  plot(counties.map,border=gray(.8), lwd=bw,axes = FALSE, las = 1,col=as.character(counties.map@data$zCat))
  if (!is.null(state.map)) {
    plot(state.map,add=TRUE,lwd=1)
  }
  ##with(counties.map.c,text(x,y,name,cex=0.75))
  if (plot.legend) legend("bottomleft", cutpoints, fill = cutpointsColors,bty="n",title=title,cex=cex.legend)
  ##title("Cartogram")
}
 

trazarla

 plot.heat(counties.map,state.map,z="noise",breaks=c(-Inf,-2,-1,0,1,2,Inf))
 

16voto

Jay Puntos 884

Pensé que iba a añadir algo de nueva información aquí, ya que ha habido algo de actividad en torno a este tema desde la publicación. Aquí están dos grandes enlaces a "Choropleth Mapa R Desafío" en las Revoluciones blog:

Choropleth Mapa R Desafío

Choropleth Desafío Resultados

Esperemos que estas son útiles para las personas que ven esta pregunta.

Todo lo mejor,

Jay

9voto

Ehva Puntos 151

Echa un vistazo a los paquetes

library(sp)
library(rgdal)

que son agradables para los geodatos, y

library(RColorBrewer)  

es útil para la coloración. Este mapa está hecho con los paquetes anteriores y este código:

VegMap <- readOGR(".", "VegMapFile")
Veg9<-brewer.pal(9,'Set2')
spplot(VegMap, "Veg", col.regions=Veg9,
 +at=c(0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5),
 +main='Vegetation map')

"VegMapFile" es un shapefile y "Veg" es la variable que muestra. Probablemente se puede hacer mejor con un poco de trabajo. Me parece que no se permitirá cargar la imagen, aquí hay un enlace a la imagen:

3voto

Paolo Puntos 1475

Echa un vistazo al paquete PBSmapping (ver Borh la viñeta / manual y la demo) y esta de datos Mashups O'Reilly en el artículo I (por desgracia, no es gratuita, pero vale 4,99 $ para descarga, según las revoluciones del blog ).

3voto

David Smith Puntos 835

El R Galería de gráficos tiene una muy mapa similar que debe hacer para un buen punto de partida. El código está aquí: www.ai.rug.nl/~hedderik/R/US2004. Que había necesidad de agregar una leyenda con la función de leyenda ().

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X