Learn R Programming

googleVis (version 0.4.4)

gvisAnnotatedTimeLine: Google Annotated Time Line with R

Description

The gvisAnnotatedTimeLine 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. An annotated time line is an interactive time series line chart with optional annotations. The chart is rendered within the browser using Flash.

Usage

gvisAnnotatedTimeLine(data,  datevar = "", numvar="", idvar = "",
                      titlevar="", annotationvar="",
                      date.format = "%Y/%m/%d",
                      options = list(), chartid)

Arguments

data
a data.frame. The data has to have at least two columns, one with date information (datevar) and one numerical variable.
datevar
column name of data which shows the date dimension. The information has to be of class Date or POSIX* time series.
numvar
column name of data which shows the values to be displayed against datevar. The information has to be numeric.
idvar
column name of data which identifies different groups of the data. The information has to be of class character or factor.
titlevar
column name of data which shows the title of the annotations. The information has to be of class character or factor. Missing informat
annotationvar
column name of data which shows the annotation text. The information has to be of class character or factor. Missing information can be
date.format
if datevar is of class Date then this argument specifies how the dates are reformatted to be used by JavaScript.
options
list of configuration options for Google Annotated Time Line. [object Object],[object Object] Further possible components are, taken from https://google-developers.appspot.com/chart/interactive/docs/gallery/annotatedtimeline#Configuration
scaleColumns
a JSON array of numbers. Default automatic. Specifies which values to show on the Y axis tick marks in the graph. The default is to have a single scale on the right side, which applies to both series; but you can have different sides of the graph sca

Value

  • gvisAnnotatedTimeLine returns list of class "gvis" and "list". An object of class "gvis" is a list containing at least the following components:
  • typeGoogle visualisation type, here 'AnnotatedTimeLine'
  • chartidcharacter id of the chart object. Unique chart ids are required to place several charts on the same page.
  • htmla list with the building blocks for a page [object Object],[object Object],[object Object],[object Object]

item

  • scaleType
  • 'allmaximized'
  • 'allfixed'
  • thickness
  • wmode
  • zoomEndTime
  • zoomStartTime
  • chartid

describe

  • 'maximized'The Y axis will span the minimum to the maximum values of the series. If you have more than one series, use 'allmaximized'.
  • 'fixed' [default]The Y axis varies, depending on the data values values:
    • If all values are >=0, the Y axis will span from zero to the maximum data value.
    If all values are <=0, the="" y="" axis="" will="" span="" from="" zero="" to="" minimum="" data="" value.<="" item=""> If values are both positive and negative, the Y axis will range from the series maximum to the series minimum. For multiple series, use 'allfixed'.

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.

Details

From https://google-developers.appspot.com/chart/interactive/docs/gallery/annotatedtimeline.html#Data_Format:

You can display one or more lines on your chart. Each row represents an X position on the chart - that is, a specific time; each line is described by a set of one to three columns.

  • The first column is of type date or datetime, and specifies the X value of the point on the chart. If this column is of type date (and not datetime) then the smallest time resolution on the X axis will be one day.
Each data line is then described by a set of one to three additional columns as described here:
  • Y value - [Required, Number] The first column in each set describes the value of the line at the corresponding time from the first column. The column label is displayed on the chart as the title of that line.
Annotation title - [Optional, String] If a string column follows the value column, and the displayAnnotations option is true, this column holds a short title describing this point. For instance, if this line represents temperature in Brazil, and this point is a very high number, the title could be "Hottest day on record". Annotation text - [Optional string] If a second string column exists for this series, the cell value will be used as additional descriptive text for this point. You must set the option displayAnnotations to true to use this column. You can use HTML tags, if you set allowHtml to true; there is essentially no size limit, but note that excessively long entries might overflow the display section. You are not required to have this column even if you have an annotation title column for this point. The column label is not used by the chart. For example, if this were the hottest day on record point, you might say something like "Next closest day was 10 degrees cooler!".

References

Google Annotated Time Line API: https://google-developers.appspot.com/chart/interactive/docs/gallery/annotatedtimeline.html

Follow the link for Google's data policy.

See Also

See also print.gvis, plot.gvis for printing and plotting methods. Further see reshape for reshaping data, e.g. from a wide format into a long format.

Examples

Run this code
## Please note that by default the googleVis plot command
## will open a browser window and requires Flash and Internet
## connection to display the visualisation.


data(Stock)
Stock
A1 <- gvisAnnotatedTimeLine(Stock, datevar="Date",
                           numvar="Value", idvar="Device",
                           titlevar="Title", annotationvar="Annotation",
                           options=list(displayAnnotations=TRUE,
                            legendPosition='newRow',
                            width=600, height=350)
                           )
plot(A1)

## Two Y-axis
A2 <- gvisAnnotatedTimeLine(Stock, datevar="Date",
                           numvar="Value", idvar="Device",
                           titlevar="Title", annotationvar="Annotation",
                           options=list(displayAnnotations=TRUE, 
                            width=600, height=350, scaleColumns='[0,1]',
                            scaleType='allmaximized')
                          )
plot(A2)

## Zoom into the time window, no Y-axis ticks
A3 <- gvisAnnotatedTimeLine(Stock, datevar="Date",
                           numvar="Value", idvar="Device",
                           titlevar="Title", annotationvar="Annotation",
                           options=list(
                             width=600, height=350,
                            zoomStartTime=as.Date("2008-01-04"),
                            zoomEndTime=as.Date("2008-01-05")) 
                          )
plot(A3)



## Colouring the area below the lines to create an area chart
A4 <- gvisAnnotatedTimeLine(Stock, datevar="Date",
                           numvar="Value", idvar="Device",
                           titlevar="Title", annotationvar="Annotation",
                           options=list(
                             width=600, height=350,
                             fill=10, displayExactValues=TRUE,
                             colors="['#0000ff','#00ff00']")
                           )
                          
plot(A4)


## Data with POSIXct datetime variable
A5 <- gvisAnnotatedTimeLine(Andrew, datevar="Date/Time UTC",
                            numvar="Pressure_mb",
                            options=list(scaleType='maximized')
                            )

plot(A5)


## Plot Apple's monthly stock prices since 1984

## Get current date
d <- Sys.time() 
current.year <- format(d, "%Y")
current.month <- format(d, "%m")
current.day <- format(d, "%d")

## Yahoo finance sets January to 00 hence: 
month <- as.numeric(current.month)  - 1
month <- ifelse(month < 10, paste("0",month, sep=""), m)

## Get weekly stock prices from Apple Inc.
tckr <- 'AAPL'
yahoo <- 'http://ichart.finance.yahoo.com/table.csv'

fn <- sprintf('%s?s=%s&a=08&b=7&c=1984&d=%s&e=%s&f=%s&g=w&ignore=.csv',
      yahoo, tckr, month, current.day, current.year)

## Get data from Yahoo! Finance
data <- read.csv(fn, colClasses=c("Date", rep("numeric",6)))

AAPL <- reshape(data[,c("Date", "Close", "Volume")], idvar="Date", 
     		times=c("Close", "Volume"), 
                timevar="Type",
                varying=list(c("Close", "Volume")),
                v.names="Value",
                direction="long")

## Calculate previous two years for zoom start time
lyd <- as.POSIXlt(as.Date(d))
lyd$year <- lyd$year-2
lyd <- as.Date(lyd)

aapl <- gvisAnnotatedTimeLine(AAPL, datevar="Date",
                           numvar="Value", idvar="Type",
                          options=list(
                            colors="['blue', 'lightblue']",
                            zoomStartTime=lyd,
                            zoomEndTime=as.Date(d),
                            legendPosition='newRow',
                            width=600, height=400, scaleColumns='[0,1]',
                            scaleType='allmaximized')
                           )

plot(aapl)

Run the code above in your browser using DataLab