Skip to Content

gvisGeoMap {googleVis}

Google Geo Map with R
Package: 
googleVis
Version: 
0.4.7

Description

The gvisGeoMap function reads a data.frame and creates text output referring to the Google Visualisation API, which can be included into a web page, or as a stand-alone page. A geo map is a map of a country, continent, or region map, with colours and values assigned to specific regions. Values are displayed as a colour scale, and you can specify optional hover-text for regions. The map is rendered in the browser. Note that the map is not scroll-able or drag-gable, but can be configured to allow zooming.

Usage

gvisGeoMap(data, locationvar=”, numvar=”, hovervar=”,
           options = list(), chartid)

Arguments

data
a data.frame. The data has to have at least two columns with location name (locationvar), value to be mapped to location (numvar) and an optional variable to display any text while the mouse hovers over the location (hovervar).
locationvar
column name of data with the geo locations to be analysed. The locations can be provide in two formats:
Format 1
'latitude:longitude'. See the example below.
Format 2
Address, country name, region name locations, or     US metropolitan area codes, see     http://code.google.com/apis/adwords/docs/developer/adwords_api_us_metros.html. This     format works with the dataMode option set to either     'markers' or 'regions'. The following formats are accepted: A     specific address (for example, "1600 Pennsylvania Ave"). A     country name as a string (for example, "England"), or an uppercase ISO-3166 code     or its English text equivalent (for example, "GB" or "United Kingdom").     An uppercase ISO-3166-2 region code name or its English text     equivalent (for example, "US-NJ" or "New Jersey").
numvar
column name of data with the numeric value displayed when the user hovers over this region.
hovervar
column name of data with the additional string text displayed when the user hovers over this region.
options
list of configuration options for Google Geo Map.
gvis.editor
a character label for an     on-page button which opens an in-page dialog box that enables     users to edit, change and customise the chart. By default no     value is given and therefore no button is displayed.

Further possible components are, taken from https://google-developers.appspot.com/chart/interactive/docs/gallery/geomap.html#Configuration_Options:

region
string, default 'world'.         The area to display on the map. (Surrounding areas will be     displayed as well.) Can be either a country code (in uppercase     ISO-3166 format), or a one of the following strings     
     world (Whole world)
     us_metro (United States, metro areas)
     005 (South America)
     013 (Central America)
     021 (North America)
     002 (All of Africa)
     017 (Central Africa)
     015 (Northern Africa)
     018 (Southern Africa)
     030 (Eastern Asia)
     034 (Southern Asia)
     035 (Asia/Pacific region)
     143 (Central Asia)
     145 (Middle East)
     151 (Northern Asia)
     154 (Northern Europe)
     155 (Western Europe)
     039 (Southern Europe)
    

         Geomap does not enable scrolling or dragging behavior, and only      limited zooming behavior. A basic zoom out can be enabled by setting      the showZoomOut property.     

dataMode
string, default    'regions'.          How to display values on the map. Two values are supported:

     regions - Colors a whole region with the appropriate      color. This option cannot be used with latitude/longitude      addresses. See Regions Example.           markers - Displays a dot over a region, with the      color and size indicating the value. See Markers Example.     

width
string, default '556px'. Width of the      visualization. If no units are given, the default unit is pixels.     
height
default, string '347px'. Height of the      visualization. If no units are given, the default unit is      pixels.     
colors
a JSON array of RGB numbers in the format 0xRRGGBB      [0xE0FFD4, 0xA5EF63, 0x50AA00, 0x267114]. Color gradient      to assign to values in the visualization. You must have at least          two values; the gradient will include all your values, plus      calculated intermediary values, with the lightest color as the      smallest value, and the darkest color as the highest.     
showLegend
boolean, default TRUE. If true,      display a legend for the map.     
showZoomOut
boolean, default FALSE. If true,      display a button with the label specified by the zoomOutLabel      property. Note that this button does nothing when clicked,      except throw the zoomOut event. To handle zooming, catch this      event and change the region option. You can only specify      showZoomOut if the region option is smaller than the world      view. One way of enabling zoom in behavior would be to listen      for the regionClick event, change the region property to the      appropriate region, and reload the map.     
zoomOutLabel
string, default 'Zoom Out'. Label for      the zoom button.     
gvis.listener.jscode
character string which will be      placed inside select event. A valid value is      alert('a region was selected');.      You may also use the method getSelection.     
chartid
character. If missing (default) a random chart id will be generated based on chart type and tempfile

Values

gvisGeoMap returns list of class "gvis" and "list". An object of class "gvis" is a list containing at least the following components:

type
Google visualisation type, here 'GeoMap'
chartid
character id of the chart object. Unique chart ids are required to place several charts on the same page.
html
a list with the building blocks for a page
header
a character string of a html page header:     <html>...<body>,
chart
a named character vector of the chart's building blocks:     
jsHeader
Opening <script> tag and      reference to Google's JavaScript library.     
jsData
JavaScript function defining the input      data as a JSON object.     
jsDrawChart
JavaScript function      combing the data with the visualisation API and user      options.     
jsDisplayChart
JavaScript function calling the      handler to display the chart.     
jsFooter
End tag </script>.     
jsChart
Call of the jsDisplayChart      function.     
divChart
<div> container to embed the chart      into the page.     
caption
character string of a standard caption,     including data name and chart id.
footer
character string of a html page footer:     </body>...</html>, including the used R and googleVis version     and link to Google's Terms of Use.

Warnings

Because of Flash security settings the chart might not work correctly when accessed from a file location in the browser (e.g., file:///c:/webhost/myhost/myviz.html) rather than from a web server URL (e.g. http://www.myhost.com/myviz.html). See the googleVis package vignette and the Macromedia web site (http://www.macromedia.com/support/documentation/en/flashplayer/help/) for more details.

References

Google Geo Map API: https://google-developers.appspot.com/chart/interactive/docs/gallery/geomap.html

Follow the link for Google's data policy.

Note

A map can display a maximum of 400 entries; if your DataTable or DataView holds more than 400 rows, only the first 400 will be shown. The fastest modes are dataMode='regions' with locations specified as ISO codes, and dataMode='markers' with lat/long entries. The slowest mode is dataMode='markers' with a string address.

gvisGeoMap requires Flash, see gvisGeoChart for a geo map based on SVG.

See Also

See also print.gvis, plot.gvis for printing and plotting methods, gvisGeoChart and gvisIntensityMap for an alternative to gvisGeoMap.

Examples

## Please note that by default the googleVis plot command
## will open a browser window and requires Internet
## connection to display the visualisation.
 
## Regions Example
## The regions style fills entire regions (typically countries) with colors
## corresponding to the values that you assign. Specify the regions style
## by assigning options['dataMode'] = 'regions' in your code.
 
G1 <- gvisGeoMap(Exports, locationvar='Country', numvar='Profit',
                 options=list(dataMode="regions")) 
 
plot(G1)
 
## Markers Example
## The "markers" style displays a circle, sized and colored to indicate
## a value, over the regions that you specify. 
 
G2 <- gvisGeoMap(CityPopularity, locationvar='City', numvar='Popularity',
                 options=list(region='US', height=350, 
                              dataMode='markers',
                              colors='[0xFF8747, 0xFFB581, 0xc06000]'))    
 
plot(G2) 
 
## Example showing US data by state 
 
require(datasets)
states <- data.frame(state.name, state.x77)
 
G3 <- gvisGeoMap(states, "state.name", "Illiteracy",
                 options=list(region="US", dataMode="regions",
         width=600, height=400))
plot(G3) 
 
## Example with latitude and longitude information
## Show Hurricane Andrew (1992) storm track
G4 <- gvisGeoMap(Andrew, locationvar="LatLong", numvar="Speed_kt", 
                   hovervar="Category", 
                       options=list(height=350, region="US", dataMode="markers"))
 
plot(G4) 
 
## World population
WorldPopulation=data.frame(Country=Population$Country, 
               Population.in.millions=round(Population$Population/1e6,0),
               Rank=paste(Population$Country, "Rank:", Population$Rank))
 
G5 <- gvisGeoMap(WorldPopulation, "Country", "Population.in.millions", "Rank", 
                    options=list(dataMode="regions", width=600, height=300))
plot(G5)
 
 
## Not run:
 
## The demo 'AnimatedGeoMap' shows how a Geo Map can be animated
## with additional JavaScript. 
## Thanks to Manoj Ananthapadmanabhan and Anand Ramalingam, who
## provided the idea and initial code.
## Please note: This demo requires the package 'pscl' for its data set
## 'presidentalElections'.
 
demo(AnimatedGeoMap)
## End(Not run)

Author(s)

Markus Gesmann markus.gesmann@gmail.com,

Diego de Castillo decastillo@gmail.com

Documentation reproduced from package googleVis, version 0.4.7. License: GPL (>= 2)

Comments

Joost Keuskamp's picture

You wrote:

 

One way of enabling zoom in behavior would be to listen for the regionClick event, change the region property to the appropriate region, and reload the map.    

 

This is exactly the behaviour I would like my map to have. The map displays all countries with a number of markers. I've been experimenting with gvis.listener.jscode but that only seems to triggen an event on clicking a marker, rather than a region.  Could you please be as kind as to elaborate a little on how to listen to the regionClick event?