svgPanZoom {svgPanZoom} | R Documentation |
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)