Developing Geographic Thematic Maps with R

前端 未结 6 695
终归单人心
终归单人心 2020-12-04 04:34

There are clearly a number of packages in R for all sorts of spatial analysis. That can by seen in the CRAN Task View: Analysis of Spatial Data. These packages are numerous

相关标签:
6条回答
  • 2020-12-04 05:15

    The R Graphics Gallery has a very similar map which should make for a good starting point. The code is here: www.ai.rug.nl/~hedderik/R/US2004 . You'd need to add a legend with the legend() function.

    0 讨论(0)
  • 2020-12-04 05:19

    Check out the packages

    library(sp)
    library(rgdal)
    

    which are nice for geodata, and

    library(RColorBrewer)  
    

    is useful for colouring. This map is made with the above packages and this 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" is a shapefile and "Veg" is the variable displayed. Can probably be done better with a little work. I don`t seem to be allowed to upload image, here is an link to the image:

    0 讨论(0)
  • 2020-12-04 05:20

    It is just three lines!

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

    Done!! Just change the second line to any vector of 63 elements (each element between 0 and 657, which are members of colors())

    Now if you want to get fancy you can write:

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

    The 63 elements represent the 63 regions whose names you can get by running:

    map("state")$names;
    
    0 讨论(0)
  • 2020-12-04 05:26

    The following code has served me well. Customize it a little and you are done.
    (source: 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))
    

    heatmap function

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

    plot it

    plot.heat(counties.map,state.map,z="noise",breaks=c(-Inf,-2,-1,0,1,2,Inf))
    
    0 讨论(0)
  • 2020-12-04 05:31

    Take a look at the PBSmapping package (see borh the vignette/manual and the demo) and this O'Reilly Data Mashups in R article (unfortunately it is not free of charge but it worth 4.99$ to download, according Revolutions blog ).

    0 讨论(0)
  • 2020-12-04 05:39

    Thought I would add some new information here since there has been some activity around this topic since the posting. Here are two great links to "Choropleth Map R Challenge" on the Revolutions blog:

    Choropleth Map R Challenge

    Choropleth Challenge Results

    Hopefully these are useful for people viewing this question.

    All the best,

    Jay

    0 讨论(0)
提交回复
热议问题