Author: Markus Gesmann and Diego de Castillo
Date: 2024-05-25

# googleVis examples

#### Markus Gesmann and Diego de Castillo

#### 2024-05-25

# 1 Demonstration of googleVis

It may take a little while to load all charts. Please be patient. All charts require an Internet connection.

These examples are taken from the googleVis demo. You can execute the demo via

    library(googleVis)
    demo(googleVis)

For more details about the charts and further examples see the help files of the individual googleVis function and review the Google Charts API documentation and Terms of Service.

## 1.1 Line chart

    df=data.frame(country=c("US", "GB", "BR"),
                  val1=c(10,13,14),
                  val2=c(23,12,32))

    Line <- gvisLineChart(df)
    plot(Line)

### 1.1.1 Line chart with two axis

    Line2 <- gvisLineChart(df, "country", c("val1","val2"),
                           options=list(
                             series="[{targetAxisIndex: 0},
                                     {targetAxisIndex:1}]",
                             vAxes="[{title:'val1'}, {title:'val2'}]"
                           ))
    plot(Line2)

## 1.2 Bar chart

    Bar <- gvisBarChart(df)
    plot(Bar)

## 1.3 Column chart

    Column <- gvisColumnChart(df)
    plot(Column)

## 1.4 Area chart

    Area <- gvisAreaChart(df)
    plot(Area)

## 1.5 Stepped Area chart

    SteppedArea <- gvisSteppedAreaChart(df, xvar="country",
                                        yvar=c("val1", "val2"),
                                        options=list(isStacked=TRUE))
    plot(SteppedArea)

## 1.6 Combo chart

    Combo <- gvisComboChart(df, xvar="country",
                            yvar=c("val1", "val2"),
                            options=list(seriesType="bars",
                                         series='{1: {type:"line"}}'))
    plot(Combo)

## 1.7 Scatter chart

    Scatter <- gvisScatterChart(women,
                                options=list(
                                  legend="none",
                                  lineWidth=2, pointSize=0,
                                  title="Women", vAxis="{title:'weight (lbs)'}",
                                  hAxis="{title:'height (in)'}",
                                  width=300, height=300))
    plot(Scatter)

## 1.8 Bubble chart

    Bubble <- gvisBubbleChart(Fruits, idvar="Fruit",
                              xvar="Sales", yvar="Expenses",
                              colorvar="Year", sizevar="Profit",
                              options=list(
                                hAxis='{minValue:75, maxValue:125}'))
    plot(Bubble)

### 1.8.1 Customizing Lines

    Dashed <-  gvisLineChart(df, xvar="country", yvar=c("val1","val2"),
                            options=list(
                              series="[{color:'green', targetAxisIndex: 0,
                              lineWidth: 1, lineDashStyle: [2, 2, 20, 2, 20, 2]},
                              {color: 'blue',targetAxisIndex: 1,
                              lineWidth: 2, lineDashStyle: [4, 1]}]",
                              vAxes="[{title:'val1'}, {title:'val2'}]"
                            ))
    plot(Dashed)

## 1.9 Customizing points

    M <- matrix(nrow=6,ncol=6)
    M[col(M)==row(M)] <- 1:6
    dat <- data.frame(X=1:6, M)
    SC <- gvisScatterChart(dat,
                           options=list(
                             title="Customizing points",
                             legend="right",
                             pointSize=30,
                             series="{
                                  0: { pointShape: 'circle' },
                                  1: { pointShape: 'triangle' },
                                  2: { pointShape: 'square' },
                                  3: { pointShape: 'diamond' },
                                  4: { pointShape: 'star' },
                                  5: { pointShape: 'polygon' }
                                  }"))
    plot(SC)

### 1.9.1 Add edit button for on the fly customisation

    Line4 <-  gvisLineChart(df, "country", c("val1","val2"),
                            options=list(gvis.editor="Edit me!"))
    plot(Line4)

The same option is available for all other charts as well.

### 1.9.2 A chart with many options set

    Line3 <-  gvisLineChart(df, xvar="country", yvar=c("val1","val2"),
                            options=list(
                              title="Hello World",
                              titleTextStyle="{color:'red',
                                               fontName:'Courier',
                                               fontSize:16}",
                              backgroundColor="#D3D3D3",
                              vAxis="{gridlines:{color:'red', count:3}}",
                              hAxis="{title:'Country', titleTextStyle:{color:'blue'}}",
                              series="[{color:'green', targetAxisIndex: 0},
                                       {color: 'orange',targetAxisIndex:1}]",
                              vAxes="[{title:'val1'}, {title:'val2'}]",
                              legend="bottom",
                              curveType="function",
                              width=500,
                              height=300
                            ))
    plot(Line3)

## 1.10 Candlestick chart

    Candle <- gvisCandlestickChart(OpenClose,
                                   options=list(legend='none'))
    plot(Candle)

## 1.11 Pie chart

    Pie <- gvisPieChart(CityPopularity)
    plot(Pie)

## 1.12 Gauge

    Gauge <-  gvisGauge(CityPopularity,
                        options=list(min=0, max=800, greenFrom=500,
                                     greenTo=800, yellowFrom=300, yellowTo=500,
                                     redFrom=0, redTo=300, width=400, height=300))
    plot(Gauge)

## 1.13 Geo Chart

    Geo=gvisGeoChart(Exports, locationvar="Country",
                     colorvar="Profit",
                     options=list(projection="kavrayskiy-vii"))
    plot(Geo)

### 1.13.1 Example showing US data by state

    require(datasets)
    states <- data.frame(state.name, state.x77)
    GeoStates <- gvisGeoChart(states, "state.name", "Illiteracy",
                              options=list(region="US",
                                           displayMode="regions",
                                           resolution="provinces",
                                           width=600, height=400))
    plot(GeoStates)

### 1.13.2 Show Hurricane Andrew (1992) storm track with markers

    GeoMarker <- gvisGeoChart(Andrew, "LatLong",
                              sizevar='Speed_kt',
                              colorvar="Pressure_mb",
                              options=list(region="US"))
    plot(GeoMarker)

## 1.14 Table

    Table <- gvisTable(Stock,
                       formats=list(Value="#,###"))
    plot(Table)

Click on the column header to sort the rows

### 1.14.1 Table with pages

    PopTable <- gvisTable(Population,
                          formats=list(Population="#,###",
                                       '% of World Population'='#.#%'),
                          options=list(page='enable'))
    plot(PopTable)

## 1.15 Org chart

    Org <- gvisOrgChart(Regions,
                        options=list(width=600, height=250,
                                     size='large', allowCollapse=TRUE))
    plot(Org)

Double click on a parent to collapse all its children.

## 1.16 Tree Map

    Tree <- gvisTreeMap(Regions,
                        "Region", "Parent",
                        "Val", "Fac",
                        options=list(fontSize=16))
    plot(Tree)

Left mouse-click to drill down, right mouse-click to move up a level.

## 1.17 Annotation chart

    Anno <- gvisAnnotationChart(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(Anno)

## 1.18 Sankey chart

    datSK <- data.frame(From=c(rep("A",3), rep("B", 3)),
                        To=c(rep(c("X", "Y", "Z"),2)),
                        Weight=c(5,7,6,2,9,4))

    Sankey <- gvisSankey(datSK, from="From", to="To", weight="Weight",
                         options=list(
                           sankey="{link: {color: { fill: '#d799ae' } },
                                node: { color: { fill: '#a61d4c' },
                                label: { color: '#871b47' } }}"))
    plot(Sankey)

## 1.19 Histogram

    set.seed(123)
    datHist=data.frame(A=rpois(100, 20),
                       B=rpois(100, 5),
                       C=rpois(100, 50))

    Hist <- gvisHistogram(datHist, options=list(
      legend="{ position: 'top', maxLines: 2 }",
      colors="['#5C3292', '#1A8763', '#871B47']",
      width=400, height=360))
    plot(Hist)

## 1.20 Calendar chart

    Cal <- gvisCalendar(Cairo,
                        datevar="Date",
                        numvar="Temp",
                        options=list(
                          title="Daily temperature in Cairo",
                          height=320,
                          calendar="{yearLabel: { fontName: 'Times-Roman',
                                   fontSize: 32, color: '#1A8763', bold: true},
                                   cellSize: 10,
                                   cellColor: { stroke: 'red', strokeOpacity: 0.2 },
                                   focusedCellColor: {stroke:'red'}}")
    )
    plot(Cal)

## 1.21 Timeline chart

    datTL <- data.frame(Position=c(rep("President", 3), rep("Vice", 3)),
                        Name=c("Washington", "Adams", "Jefferson",
                               "Adams", "Jefferson", "Burr"),
                        start=as.Date(x=rep(c("1789-03-29", "1797-02-03",
                                              "1801-02-03"),2)),
                        end=as.Date(x=rep(c("1797-02-03", "1801-02-03",
                                            "1809-02-03"),2)))

    Timeline <- gvisTimeline(data=datTL,
                             rowlabel="Name",
                             barlabel="Position",
                             start="start",
                             end="end",
                             options=list(timeline="{groupByRowLabel:false}",
                                          backgroundColor='#ffd',
                                          height=350,
                                          colors="['#cbb69d', '#603913', '#c69c6e']"))
    plot(Timeline)

## 1.22 Gantt chart

    daysToMilliseconds <- function(days){
      days * 24 * 60 * 60 * 1000
    }

    dat <- data.frame(
      taskID = c("Research", "Write", "Cite", "Complete", "Outline"),
      taskName = c("Find sources", "Write Paper",  "Create bibliography", "Hand in paper", "Outline paper"),
      resource = c(NA, "write", "write", "complete", "write"),
      start = c(as.Date("2015-01-01"), NA, NA, NA, NA),
      end = as.Date(c("2015-01-05", "2015-01-09", "2015-01-07", "2015-01-10", "2015-01-06")),
      duration = c(NA, daysToMilliseconds(c(3, 1, 1, 1))),
      percentComplete = c(100, 25, 20, 0, 100),
      dependencies = c(NA, "Research, Outline", "Research", "Cite, Write", "Research")
    )

    gntt <- gvisGantt(dat, taskID = "taskID",
                      taskName = "taskName",
                      resource = "resource",
                      start = "start",
                      end = "end",
                      duration = "duration",
                      percentComplete = "percentComplete",
                      dependencies = "dependencies",
                      options = list(height = '300',
                                     width = 'auto'))

    plot(gntt)

## 1.23 Word tree chart

    wt1 <- gvisWordTree(Cats, textvar = "Phrase")
    plot(wt1)

## 1.24 Merging charts

    G <- gvisGeoChart(Exports, "Country", "Profit",
                      options=list(width=300, height=300))
    T <- gvisTable(Exports,
                   options=list(width=220, height=300))

    GT <- gvisMerge(G,T, horizontal=TRUE)
    plot(GT)