gvis Methods | R Documentation |
Methods to print and plot gvis
objects
## S3 method for class 'gvis' print(x, tag=NULL, file = "", ...) ## S3 method for class 'gvis' plot(x, tag=NULL,...)
x |
An object of class |
tag |
Default A complete list of available tags is given by the command
The default value of The default tag for
|
file |
file name. If "" (the
default), output will be printed to the standard output connection,
the console unless redirected by |
... |
arguments passed on to |
An object of class "gvis
" is a list containing at least the
following components (tags):
type
Google visualisation type, e.g. 'MotionChart'
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.
|
None (invisible |
|
Returns the file name invisibly. |
The plot
command does not open a graphics device in the
traditional way. Instead it creates HTML files in a temporary
directory and uses the R HTTP server to display the output
of a googleVis
function locally.
A browser with Flash and Internet connection is required.
The displayed page includes a link (click on the chart id) to a
further page, which shows the code of the chart for the user to copy
and paste into her own page.
Markus Gesmann markus.gesmann@gmail.com,
Diego de Castillo decastillo@gmail.com
Please see also the package vignette for the usage of the googleVis package with RApache, brew, knitr and R.rsp.
See also cat
, browseURL
,
createGoogleGadget
and gvisMerge
for combining charts.
## Show gvis options sapply(c("gvis.print.tag", "gvis.plot.tag", "gvis.tags"), getOption) M <- gvisMotionChart(Fruits, "Fruit", "Year") str(M) ## The output for a complete web page M ## Access only the plot, M$html$chart ## wrap it in cat and it becomes more readable, cat(unlist(M$html$chart)) ## or use the print function. print(M, tag="chart") ## Extract the data as a JavaScript function. print(M, tag="jsData") ## Display the visualisation. ## A web browser with Internet connection and Flash is required. plot(M) ## Combine with another chart, e.g. table #tbl <- gvisTable(Fruits, options=list(height=220)) #Mtbl <- gvisMerge(M, tbl) #plot(Mtbl) ## Example of using googleVis with knitr and markdown ## Not run: ## Simple knitr/markdown file with googleVis knitrRmd <-" # Markdown example with knitr and googleVis =========================================== This is a little Markdown example file. Set the googleVis options first. In this case change the behaviour of plot.gvis ```{r setOptions, message=FALSE} library(googleVis) op <- options(gvis.plot.tag='chart') ``` The following plot statements will automatically return the HTML required for the 'knitted' output. ## Combo chart ```{r ComboExample, results='asis', tidy=FALSE} ## Add the mean CityPopularity$Mean=mean(CityPopularity$Popularity) CC <- gvisComboChart(CityPopularity, xvar='City', yvar=c('Mean', 'Popularity'), options=list(seriesType='bars', width=450, height=300, title='City Popularity', series='{0: {type:\"line\"}}')) plot(CC) ``` Example of gvisComboChart with R code shown above. ## Place two charts next to each other ```{r gvisMergeExample, results='asis', echo=FALSE} Geo <- gvisGeoChart(Exports, locationvar='Country', colorvar='Profit', options=list(height=300, width=350)) Tbl <- gvisTable(Exports, options=list(height=300, width=200)) plot(gvisMerge(Geo, Tbl, horizontal=TRUE)) `````` Example of a gvisGeoChart with gvisTable and R code hidden. ## Motion Chart ```{r MotionChartExample, results='asis', tidy=FALSE} M <- gvisMotionChart(Fruits, 'Fruit', 'Year', options=list(width=400, height=350)) plot(M) ``` Please note that the Motion Chart is only displayed when hosted on a web server, or is placed in a directory which has been added to the trusted sources in the [security settings of Macromedia] (https://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html). See the googleVis package vignette for more details. ```{r resetOptions} ## Set options back to original options options(op) ``` " ## Write the content of knitrRmd into a Rmd-file, knit it and convert it ## into a html output. Finally show the file with the R-help http ## server, this will ensure that also the motion chart is visible. library(knitr) library(markdown) wd <- getwd() setwd(tempdir()) fn=tempfile() fn.Rmd <- paste(fn, ".Rmd", sep="") fn.md <- paste(fn, ".md", sep="") fn.html <- paste(fn, "-out.html", sep="") ## Write R Markdown into a file cat(knitrRmd, file=fn.Rmd) render_markdown() knit(fn.Rmd, fn.md) knit2html(fn.md) ## Open output in browser ## Use plot.gvis which will use the R-help http server ## The URL will start with http://127.0.0.1... ## The HTML file will be copied into a temporary directory plot.gvis(fn.html) ## Compare to browseURL, its URL will start with file://... the motion ## chart is unlikely to be displayed because of Flash security ## settings. See the googleVis vignette for more details. browseURL(fn.html) setwd(wd) ## End(Not run) ## Not run: ## Updating the data of an existing googleVis web page ## Suppose you have an existing web page in which you embedded a ## motion chart with the id "mtnc". ## Now you have a new set of data, but you would like to avoid ## touching the html file again. ## The idea is to write the data and JavaScript functions into separate ## files and to refer to these in the html page. ## In this example we call the chart id "mtnc" ## To display the example we use the R HTTP server again, and ## write the files into a temp directory myChartID <- "mtnc" ## baseURL should reflect your web address, e.g. http://myHomePage.com baseURL <- sprintf("http://127.0.0.1:%s/custom/googleVis", tools:::httpdPort) wwwdir <- tempdir() ## the www repository on your computer ## Create a motion chart M=gvisMotionChart(Fruits, "Fruit", "Year", chartid=myChartID) ## Here is our plot again plot(M) ## Write the data and functions into separate files: cat(M$html$chart['jsData'], file=file.path(wwwdir, "gvisData.js")) cat(M$html$chart[c('jsDrawChart', 'jsDisplayChart', 'jsChart')], file=file.path(wwwdir, "gvisFunctions.js")) ## Create a html page with reference to the above ## JavaScript files html <- sprintf(' <html> <head> <script type="text/javascript" src="https://www.google.com/jsapi"> </script> <script type="text/javascript" src="%s/gvisFunctions.js"></script> <script type="text/javascript" src="%s/gvisData.js"></script> <script type="text/javascript"> displayChart%s() </script> </head> <body> <div id="%s" style="width: 600px; height: 500px;"></div> </body> </html> ', baseURL, baseURL, myChartID, myChartID) ## Write html scaffold into a file cat(html, file=file.path(wwwdir, paste("Chart", myChartID, ".html", sep=""))) ## Display the result via URL <- paste(baseURL,"/Chart", myChartID, ".html", sep="") browseURL(URL) ## Update the data, say the data should have shown North and South ## instead of East and West as a location FruitsUpdate <- Fruits levels(FruitsUpdate$Location)=c("North", "South") Mupdate=gvisMotionChart(FruitsUpdate, "Fruit", "Year", chartid=myChartID) ## Only update the file gvisData.js: cat(Mupdate$html$chart['jsData'], file=file.path(wwwdir, "gvisData.js")) ## Redisplay the chart with the updated data browseURL(URL) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.