Pregunta

Hay claramente un número de paquetes en R para todo tipo de análisis espacial.Que puede verse en la CRAN Vista de Tareas:El análisis de Datos Espaciales.Estos paquetes son numerosas y diversas, pero todo lo que quiero hacer es algo de simple mapas temáticos.Tengo los datos con el condado y el estado de los códigos FIPS y tengo de forma ESRI archivos de condado y límites del estado y el acompañamiento de los códigos FIPS que permite unirse con los datos.La forma de 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 Arco del producto, pero este es el tipo de cosas que me gustaría hacer con R:

texto alt http://www.infousagov.com/images/choro.jpg Mapa copiado de aquí.

¿Fue útil?

Solución

El siguiente código me ha servido bien.Personalizar un poco y listo.alt text
(fuente: eduardoleoni.com)

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))

mapa de calor de la función

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")
}

la trama es

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

Otros consejos

Pensaba que iba a añadir un poco de nueva información aquí, ya que ha habido alguna actividad en torno a este tema desde la publicación. Aquí hay dos grandes conexiones con el "Mapa de coropletas R Challenge" en el blog de revoluciones:

coropletas Mapa R Desafío

coropletas Desafío Resultados

Esperamos que estos son útiles para las personas que visitan esta pregunta.

Todo lo mejor,

Jay

Vea los paquetes

library(sp)
library(rgdal)

que están muy bien para los datos geográficos, y

library(RColorBrewer)  

es útil para la coloración. mapa se hace 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 archivo de formas y "Veg" es la variable que se muestra. Puede probablemente ser hecho mejor con un poco de trabajo. I don `t parece que se le permita subir la imagen, aquí es un enlace a la imagen:

Tome un vistazo al paquete PBSmapping (ver Borh la viñeta / manual y la demo) y este O'Reilly Datos Mashups en I artículo (por desgracia, no es de forma gratuita, pero vale la pena $ 4,99 para descargar, según Las revoluciones del blog ).

Es sólo tres líneas!

library(maps);
colors = floor(runif(63)*657);
map("state", col = colors, fill = T, resolution = 0)

Listo !! Sólo cambia la segunda línea a cualquier vector de 63 elementos (cada elemento de entre 0 y 657, que son miembros de colores ())

Ahora si usted desea conseguir la suposición puede escribir:

library(maps);
library(mapproj);
colors = floor(runif(63)*657);
map("state", col = colors, fill = T, projection = "polyconic", resolution = 0);

Los 63 elementos representan las regiones 63, cuyos nombres se puede obtener mediante la ejecución:

map("state")$names;

La Galería de gráficos R tiene una muy similares mapa que debería 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 ().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top