```{r setup, echo=FALSE}
suppressWarnings(suppressPackageStartupMessages(library(knitr)))
options(width=80)
```
```{r wrap-hook, echo=FALSE}
hook_output = knit_hooks$get('output')
knit_hooks$set(output = function(x, options) {
# this hook is used only when the linewidth option is not NULL
if (!is.null(n <- options$linewidth)) {
x = knitr:::split_lines(x)
# any lines wider than n should be wrapped
if (any(nchar(x) > n)) x = strwrap(x, width = n)
x = paste(x, collapse = '\n')
}
hook_output(x, options)
})
```
```{r interactiveDisplay-load, echo=FALSE}
suppressWarnings(suppressPackageStartupMessages(library(interactiveDisplay)))
```
# interactiveDisplay
[interactiveDisplay](http://bioconductor.org/packages/2.13/bioc/html/interactiveDisplay.html)
`interactiveDisplay` uses the function `display()` to host a browser based
application on the fly using the Shiny package. Currently 4 Bioconductor
objects: Granges, GrangesList, ExpressionSet and SummarizedExperiment are
supported with tailored methods. In some cases, grid based plots are converted
to SVG with the gridSVG package and additional JavaScript is appended for simple
mousewheel zoom and panning. Shiny UI elements are available based on the
object passed to `display()`. These allow the user to modify how the plot is
displayed, and for some objects, modify or subset the data and send it back to
the console.
## Methods
draw an SummarizedExperiment object
```{r SummarizedExperiment_demo, eval=FALSE}
data(se)
display(se)
```
draw a GRanges object
```{r GRanges_demo, eval=FALSE}
data(mmgr)
display(mmgr)
```
draw a GRangesList object
```{r GRangesList_demo, eval=FALSE}
data(mmgrl)
display(mmgrl)
```
draw an ExpressionSet object
```{r ExpressionSet_demo, eval=FALSE}
data(expr)
display(expr)
```
## Additional Functionality
In addition to the main `display()` function, the user can send any grid based
plot to the browser as a JS interactive SVG.
```{r gridsvgjs_demo, eval=FALSE}
library(ggplot2)
data(mtcars)
qp <- qplot(mpg, data=mtcars, geom="density", fill=factor(cyl), alpha=I(.4))
gridsvgjs(qp)
```
## Acknowledgments
Shiny
Joe Cheng and Winston Chang
http://www.rstudio.com/shiny/
Force Layout
Jeff Allen
https://github.com/trestletech/shiny-sandbox/tree/master/grn
gridSVG
Simon Potter
http://sjp.co.nz/projects/gridsvg/
Zoom/Pan JavaScript libraries
John Krauss
https://github.com/talos/jquery-svgpan
Andrea Leofreddi
https://code.google.com/p/svgpan/
JavaScript Color Chooser
Jan Odvarko
http://jscolor.com/
Data-Driven Documents
Michael Bostock
http://d3js.org/