59 votes

Développer des cartes thématiques géographiques avec R

Il y a clairement un certain nombre de paquets dans la R de toutes sortes de l'analyse spatiale. Qui peut être vu dans le CRAN Vue des Tâches: l'Analyse des Données Spatiales. Ces paquets sont nombreuses et diverses, mais tout ce que je veux faire, c'est simple de cartes thématiques. J'ai des données avec le comté et l'état des codes FIPS et j'ai de forme ESRI fichiers de comté et les frontières de l'etat et de l'accompagnement des codes FIPS qui permet l'assemblage avec les données. La forme de fichiers peuvent être facilement convertis en d'autres formats, en cas de besoin.

Alors, quel est le plus simple moyen pour créer des cartes thématiques avec R?

Cette carte ressemble à elle a été créée avec un ESRI Arc de produit, mais c'est le type de chose que je voudrais faire avec R:

alt text Carte copié à partir d'ici.

62voto

Eduardo Leoni Points 4470

Le code suivant m'a bien servi. Personnalisez-le un peu et vous avez terminé. texte alternatif

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

fonction heatmap

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

l'intrigue

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

17voto

Jay Points 884

Pensé que je pourrais ajouter de nouvelles informations ici, puisqu'il y a eu une certaine activité autour de ce sujet depuis l'affichage. Voici deux grands liens à "Choropleth Carte R Challenge" sur les Révolutions blog:

Choropleth Carte R Défi

Choropleth Résultats Du Défi

Espérons que ces sont utiles pour les personnes de la visualisation de cette question.

Tous les meilleurs,

Jay

11voto

Ehva Points 151

Découvrez les packages

library(sp)
library(rgdal)

qui sont sympas pour les géodonnées de base, et

library(RColorBrewer)  

est utile pour la coloration. Cette carte est faite avec les forfaits ci-dessus et ce code:

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" est un shapefile et "Veg" la variable est affichée. Peut probablement être fait mieux avec un peu de travail. Je ne semble pas être autorisés à télécharger des images, voici un lien vers l'image:

4voto

Paolo Points 1475

Jetez un coup d'œil au paquet PBSmapping (voir la vignette / manuel et la démo) et à cet article O'Reilly Data Mashups in R (malheureusement, ce n'est pas gratuit, mais le téléchargement vaut 4,99 $, selon le blog de Revolutions ).

3voto

David Smith Points 835

La R Graphics Gallery a une carte très similaire qui devrait constituer un bon point de départ. Le code est ici: www.ai.rug.nl/~hedderik/R/US2004. Vous devez ajouter une légende avec la fonction legend ().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X