Plot R Data With googleVis

September 30, 2012
By

(This article was first published on W. Andrew Barr's Paleoecology Blog, and kindly contributed to R-bloggers)

Here is a little code snippet that shows how to do two things

  1. Use the Google Maps API to resolve place names into lat-long coordinate pairs.
  2. Plot R dataframes that contain lat-long data (for example from #1) onto Google Maps for quick visualization using the googleVis package.  The embedded map looks a little wonky here but it looks perfectly normal when you plot it locally in your browser. (Note: you need an internet connection for these maps to plot properly). 
//-->
-->
Data: plotData • Chart ID: MapID71b85742e7
R version 2.14.1 (2011-12-22) • googleVis-0.2.15Google Terms of UseData Policy
require(XML)
require(googleVis)
 
 
####functions borrwed from http://statisfaction.wordpress.com/2011/10/05/calling-google-maps-api-from-r/
 
getDocNodeVal=function(doc, path)
{
sapply(getNodeSet(doc, path), function(el) xmlValue(el))
}
 
gGeoCode=function(str)
{
library(XML)
u=paste('http://maps.google.com/maps/api/geocode/xml?sensor=false&address=',str)
doc = xmlTreeParse(u, useInternal=TRUE)
str=gsub(' ','%20',str)
lat=getDocNodeVal(doc, "/GeocodeResponse/result/geometry/location/lat")
lng=getDocNodeVal(doc, "/GeocodeResponse/result/geometry/location/lng")
list(lat = lat, lng = lng)
}
 
#### End functions borrowed from http://statisfaction.wordpress.com/2011/10/05/calling-google-maps-api-from-r/
 
# get some names of paleoanthropological sites in France.
placeNames<-c("Cro Magnon","La Ferrassie","Chauvet Cave","La Chapelle aux Saints", "Le Moustier")
 
#resolve the placenames into latlong
latLong<-lapply(placeNames, FUN=gGeoCode)
 
#format the latlong coordinates into the proper format lat:long
latLongFormatted<-lapply(latLong,FUN=function(x){
paste(x$lat[1],x$lng[1],sep=":")
})
 
#create a dataframe, formatting the place name string first and making the latlong a vector, not list
plotData<-data.frame(name=placeNames,latlong=unlist(latLongFormatted))
 
sites<-gvisMap(plotData,locationvar="latlong",tipvar="name", options=list(mapType='normal'))
plot(sites)
Created by Pretty R at inside-R.org

To leave a comment for the author, please follow the link and comment on his blog: W. Andrew Barr's Paleoecology Blog.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.