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
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 https://developers.google.com/adwords/api/docs/appendix/geotargeting?csw=1. 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. The options are documented in detail by Google online:
https://developers.google.com/chart/interactive/docs/gallery/geomap#Configuration_Options
The parameters can be set via a named list. The parameters have to map those of the Google documentation.
Boolean arguments are set to either
TRUE
orFALSE
, using the R syntax.Google API parameters with a single value and with names that don't include a "." are set like one would do in R, that is
options=list(width=200, height=300)
. Exceptions to this rule are the width and height options forgvisAnnotatedTimeLine
andgvisAnnotationChart
. For those two functions, width and height must be character strings of the format"Xpx"
, whereX
is a number, or"automatic"
. For example,options=list(width="200px", height="300px")
.Google API parameters with names that don't include a ".", but require multivalues are set as a character, wrapped in "[ ]" and separated by commas, e.g.
options=list(colors="['#cbb69d', '#603913', '#c69c6e']")
Google API parameters with names that do include a "." present parameters with several sub-options and have to be set as a character wrapped in "{ }". The values of those sub-options are set via parameter:value. Boolean values have to be stated as
'true'
or'false'
. For example the Google documentaion states the formating options for the vertical axis and states the parameter asvAxis.format
. Then this paramter can be set in R as:options=list(vAxis="\{format:'#,###%'\}")
.If several sub-options have to be set, e.g.
titleTextStyle.color
,titleTextStyle.fontName
andtitleTextStyle.fontSize
, then those can be combined in one list item such as:options=list(titleTextStyle="\{color:'red', fontName:'Courier', fontSize:16\}")
paramters that can have more than one value per sub-options are wrapped in "[ ]". For example to set the labels for left and right axes use:
options=list(vAxes="[\{title:'val1'\}, \{title:'val2'\}]")
gvis.editor
a character label for an on-page button that opens an in-page dialog box enabling users to edit, change and customise the chart. By default no value is given and therefore no button is displayed.
- chartid
character. If missing (default) a random chart id will be generated based on chart type and
tempfile
Value
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
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
GeoMap (gvisGeoMap) is Flash based, conisder using GeoChart (gvisGeoChart) instead. For more details visit: goo.gl/tkiEV8
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. https://www.myhost.com/myviz.html). See the googleVis package vignette and the Macromedia web site (https://www.macromedia.com/support/documentation/en/flashplayer/help/) for more details.
References
Google Chart Tools API: https://developers.google.com/chart/interactive/docs/gallery/geomap
Author
Markus Gesmann markus.gesmann@gmail.com, Diego de Castillo decastillo@gmail.com
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"))
#> Warning: GeoMap (gvisGeoMap) is Flash based, conisder using GeoChart (gvisGeoChart) instead.
#> For more details visit: goo.gl/tkiEV8
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]'))
#> Warning: GeoMap (gvisGeoMap) is Flash based, conisder using GeoChart (gvisGeoChart) instead.
#> For more details visit: goo.gl/tkiEV8
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))
#> Warning: GeoMap (gvisGeoMap) is Flash based, conisder using GeoChart (gvisGeoChart) instead.
#> For more details visit: goo.gl/tkiEV8
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"))
#> Warning: GeoMap (gvisGeoMap) is Flash based, conisder using GeoChart (gvisGeoChart) instead.
#> For more details visit: goo.gl/tkiEV8
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))
#> Warning: GeoMap (gvisGeoMap) is Flash based, conisder using GeoChart (gvisGeoChart) instead.
#> For more details visit: goo.gl/tkiEV8
plot(G5)