R googleVis Line Motion Charts with Modified Options

Using googleVis via R provides lots of options to create nice google visualizations. I was trying to create some charts while exploring the Annual Nominal Fish Catches Data on Kaggle. I wanted to create a line motion chart and exclude the default bubble chart. So I played with the options to get the desired result. The following is a quick explanation of how to do that.

Fish Catches Dataset

The dataset provides the annual TLW (tonnes live weight) catches of fish and shellfish in the Northeast Atlantic region. The original data, after cleaning, is in a wide format as follows:

##   Species   Area Units Country 2014 2013 2012 2011 2010 2009 2008 2007
## 1     ANF     27   TLW      BE  993 1633 1716 1279 1031  853  964 1363
## 2     ANF   27.4   TLW      BE  217  137  133  116  131  140  185  181
## 3     ANF 27.4.A   TLW      BE    0    0    0    0    0    0    0    0
##   2006
## 1 1193
## 2  141
## 3    0

Since gvisMotionChart() requires a time variable, I melted the dataframe to convert it to a long format as follows:

##   Species   Area Units Code Year Quantity  Country
## 1     ANF     27   TLW   BE 2014      993  Belgium
## 2     ANF   27.4   TLW   BE 2014      217  Belgium
## 3     ANF 27.4.A   TLW   BE 2014        0  Belgium

Then I wanted to plot the annual fish catch per country and also per species, so I calculated the annual sums and got the following:

Annual Fish Catch per Country

## Source: local data frame [216 x 3]
## Groups: Year [9]
## 
##     Year        Country     TLW
##    (dbl)          (chr)   (int)
## 1   2006        Belgium   67564
## 2   2006        Denmark 2680872
## 3   2006        Estonia  296160
## 4   2006  Faroe Islands 2597422
## 5   2006        Finland  451731
## 6   2006         France 1310819
## 7   2006        Germany  884707
## 8   2006      Greenland  150961
## 9   2006        Iceland 5353078
## 10  2006        Ireland  698563
## ..   ...            ...     ...

Annual Fish Catch per Species

## Source: local data frame [8,181 x 3]
## Groups: Year [9]
## 
##     Year Species   TLW
##    (dbl)   (chr) (int)
## 1   2006     AAS     0
## 2   2006     ABK     0
## 3   2006     ABX    20
## 4   2006     ABZ     0
## 5   2006     ACC     8
## 6   2006     ACH     0
## 7   2006     AES     0
## 8   2006     AGD     0
## 9   2006     AGK    15
## 10  2006     AGN     0
## ..   ...     ...   ...

googleVis Line Motion Chart Options

The default gvisMotionChart requires a dataframe with at least four columns: subject name (idvar), time (timevar) and two columns of numeric values. This is mainly for the bubble chart, which does not work properly with three columns. But since the line/bar charts can be used with 3 columns, I could use it with my summarized data. But I wanted, first to set the default view to line chart., and second to ** hide the tabs of the other charts**.

To achieve these two features, I played with the options of gvisMotionChart as follows:

  • To view the the line chart by default, I set “iconType”:”LINE” in State; which is passed to the function.

  • To hide the other charts, I set showChartButtons=F

I also wanted to have unique colors for the lines in the initial view, so I set “colorOption”:”_UNIQUE_COLOR” .

And that’s how I got a line motion chart.

#set state options to pass to gvisMotionChart
State<-'
{"yLambda":1,"showTrails":false,"xAxisOption":"_TIME",
"xZoomedDataMin":1136073600000,
"orderedByY":false,"playDuration":15000,
"nonSelectedAlpha":0.4,"xZoomedIn":false,"xLambda":1,
"colorOption":"_UNIQUE_COLOR",
"iconKeySettings":[],
"xZoomedDataMax":1388534400000,
"dimensions":{"iconDimensions":["dim0"]},
"sizeOption":"_UNISIZE","yZoomedIn":false,
"uniColorForNonSelected":false,"time":"2014",
"yZoomedDataMax":10000000,
"iconType":"LINE",
"duration":{"timeUnit":"Y","multiplier":1},
"yAxisOption":"2","yZoomedDataMin":0,"orderedByX":false}
'

#create the country chart
CountryChart = gvisMotionChart(datm.country, "Country", "Year",
                    options = list(showChartButtons=F, state=State))
#create the species chart
SpeciesChart= gvisMotionChart(datm.species, "Species", "Year",
                    options = list(showChartButtons=F, state=State))
#Plot the 2 charts 
BothCharts<-gvisMerge(CountryChart,SpeciesChart)
#remove caption
BothCharts$html$caption=""
plot(BothCharts)

The data and the full code can be found Here

Written on June 22, 2016