Site icon R-bloggers

R googleVis Line Motion Charts with Modified Options

[This article was first published on Once Upon a Data, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

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.

< !-- divChart -->
< !-- divChart -->

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:

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)
< !-- MotionChart generated in R 3.2.1 by googleVis 0.5.10 package --> < !-- Wed Jun 22 02:12:01 2016 --> < !-- jsHeader -->

To leave a comment for the author, please follow the link and comment on their blog: Once Upon a Data.

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.