| Title: | R 'Htmlwidget' to Add Pan and Zoom to Almost any R Graphic | 
| Version: | 0.3.4 | 
| Date: | 2020-02-15 | 
| Maintainer: | Kent Russell <kent.russell@timelyportfolio.com> | 
| Description: | This 'htmlwidget' provides pan and zoom interactivity to R graphics, including 'base', 'lattice', and 'ggplot2'. The interactivity is provided through the 'svg-pan-zoom.js' library. Various options to the widget can tailor the pan and zoom experience to nearly any user desire. | 
| URL: | https://github.com/timelyportfolio/svgPanZoom | 
| BugReports: | https://github.com/timelyportfolio/svgPanZoom/issues | 
| License: | MIT + file LICENSE | 
| Depends: | R (≥ 3.1.2) | 
| Imports: | htmlwidgets (≥ 0.3.2) | 
| Suggests: | htmltools, svglite | 
| Enhances: | gridSVG, knitr, XML, xml2 | 
| RoxygenNote: | 7.0.2 | 
| NeedsCompilation: | no | 
| Packaged: | 2020-02-15 14:12:31 UTC; kentr | 
| Author: | Anders Riutta et. al. [aut, cph] (svg-pan-zoom.js BSD-licensed library in htmlwidgets/lib, https://github.com/ariutta/svg-pan-zoom), Jorik Tangelder [aut, cph] (hammer.js MIT-licensed touch library in htmlwidgets/lib, https://github.com/hammerjs/hammer), Kent Russell [aut, cre] (R interface to svg-pan-zoom.js) | 
| Repository: | CRAN | 
| Date/Publication: | 2020-02-15 21:20:02 UTC | 
Pan and Zoom R graphics
Description
Add panning and zooming to almost any R graphics from base graphics, lattice, and ggplot2 by using the JavaScript library svg-pan-zoom.
Usage
svgPanZoom(
  svg,
  viewBox = TRUE,
  ...,
  width = NULL,
  height = NULL,
  elementId = NULL
)
Arguments
| svg | one of 
 | 
| viewBox | 
 | 
| ... | other configuration options for svg-pan-zoom.js.
See svg-pan-zoom How To Use
for a full description of the options available.  As an example to turn on
 | 
| width,height | valid CSS unit (like "100%", "400px", "auto") or a number, which will be coerced to a string and have "px" appended | 
| elementId | 
 | 
Examples
#  svgPanZoom tries to be very flexible with its first argument
#  in this first example use SVG as a character string
#    this is probably the least likely use case
library(svgPanZoom)
svgPanZoom('
   <svg style="height:300px;width:300px;">
     <circle cx="60" cy="60" r="50" style="fill:none;stroke:blue;"/>
   </svg>
')
## Not run: 
library(svgPanZoom)
# first let's demonstrate a base plot
# use svglite for now
library(svglite)
library(lattice)
svgPanZoom( svglite:::inlineSVG( plot(1:10) ) )
svgPanZoom(svglite:::inlineSVG(show( xyplot( y~x, data.frame(x=1:10,y=1:10) ) )))
# the package gridSVG is highly recommended for lattice and ggplot2
# second let's demonstrate a lattice plot
library(lattice)
svgPanZoom( xyplot( y~x, data.frame(x=1:10,y=1:10) ) )
# third with a ggplot2 plot
library(ggplot2)
svgPanZoom( ggplot( data.frame(x=1:10,y=1:10), aes(x=x,y=y) ) + geom_line() )
#Of course as a good htmlwidget should, it works with Shiny also.
library(shiny)
library(svglite)
library(svgPanZoom)
library(ggplot2)
ui <- shinyUI(bootstrapPage(
  svgPanZoomOutput(outputId = "main_plot")
))
server = shinyServer(function(input, output) {
  output$main_plot <- renderSvgPanZoom({
    p <- ggplot() +
     geom_point(
       data=data.frame(faithful),aes(x=eruptions,y=waiting)
     ) +
     stat_density2d(
       data=data.frame(faithful)
       ,aes(x=eruptions,y=waiting ,alpha =..level..)
       ,geom="polygon") +
     scale_alpha_continuous(range=c(0.05,0.2))
     svgPanZoom(p, controlIconsEnabled = T)
  })
})
runApp(list(ui=ui,server=server))
## End(Not run)
Shiny bindings for svgPanZoom
Description
Shiny bindings for svgPanZoom
Usage
svgPanZoomOutput(outputId, width = "100%", height = "400px")
renderSvgPanZoom(expr, env = parent.frame(), quoted = FALSE)
Arguments
| outputId | output variable to read from | 
| width,height | must be a valid CSS unit (like "100 which will be coerced to a string and have "px" appended | 
| expr | 
 | 
| env | 
 | 
| quoted | 
 |