Plots

When your R code generates a graphic, the app captures it and saves it to the Plots gallery automatically. Just write plotting code the way you normally would.

How Plot Capture Works

Plot capture works with all of R’s built-in plotting functions and any package that uses the standard graphics system:

# Any of these will create a plot that appears in the gallery
plot(1:10, sin(1:10), type = "l", main = "Sine Wave")
hist(rnorm(100), main = "Normal Distribution")
barplot(table(sample(letters[1:5], 50, replace = TRUE)))
boxplot(mpg ~ cyl, data = mtcars)

No need for dev.off(). Run your code and switch to the Plots tab, where plots arrive in the order R drew them. A badge on Plots counts every plot and widget made since you last looked.

To see each plot in the Console too, under the command that drew it, set Settings > Appearance > New Plots to Gallery and Console, or turn on Inline Plots in the Console’s … menu.

Viewing Plots in Detail

When you tap a plot thumbnail, it opens in a full-screen detail view where you can examine it closely. The detail view supports several gestures for navigating the image:

  • Pinch to zoom: zoom in from 0.5x all the way up to 5x magnification to inspect fine details
  • Drag to pan: when zoomed in, drag to move around the image
  • Double-tap: toggles between 1x and 2x zoom, which is a quick way to zoom in on a section and then snap back to the full view

VoiceOver keeps pinch and double-tap for itself, so use its zoom actions (1x to 5x) and Reset zoom.

The toolbar at the top of the detail view gives you several options:

  • Export: save the plot to a file in PNG, JPEG, or PDF format with a custom filename
  • Share: use the iOS share sheet to send the plot to Photos, AirDrop, Mail, Messages, or any other app that accepts images
  • Delete: remove this plot from the gallery (unavailable while the plot is pinned)
  • Open in new window (iPad only): opens the plot in a separate window, so you can view it side by side with your code

Left: Full-screen plot detail view with pinch-to-zoom support. Right: Export menu with format and filename options.

A full-size plot sits as a card on the app’s background, matted in the Plot Background from Settings > Appearance: White (the default), System, Light Gray, Dark Gray, or Transparent for none. The plot itself stays white, so R’s black axes stay readable. The Compare view, Console plots and iPad plot windows use the same card.

Interactive Widgets

Packages built on htmlwidgets (plotly, leaflet, DT and others) produce interactive HTML, not an image. webRios keeps them apart: tap the Interactive Plots card at the top of the gallery, or choose Plots > ⋯ > Interactive Plots, and Done to close.

Each opens as the real widget: a leaflet map pans and zooms, a plotly chart shows tooltips, and a DT::datatable() table sorts, searches and pages.

A widget that fills its page, such as a plotly chart, a leaflet map or a DT table with fillContainer = TRUE, runs edge to edge. Others, such as an ordinary DT table, sit at their own height with a margin. Text is the system font, dark on white, unless the widget sets its own. The page stays white in dark mode, since widgets are drawn to be read on white. This is datatable(mtcars[, 1:4]):

Each widget is one self-contained page, so it works offline. That also makes it large (a bare leaflet map is about 460 KB), which is why widgets live apart from the gallery.

Share a widget from the viewer to get an .html file any browser can open.

Comparing Plots

Compare two plots to see how a change to a visualization affects the result.

To start a comparison:

  1. Tap Compare in the toolbar (it appears when you have at least two plots)
  2. Tap the two plots you want to compare. They get numbered badges showing which is “Plot 1” and “Plot 2”
  3. Tap View in the toolbar to open the comparison view

The comparison sheet stacks the two plots, each on a card labeled Plot 1 or Plot 2; on an iPhone in landscape they sit side by side. Sync zoom keeps both at the same zoom and position. Tap the link icon to zoom each on its own.

On iPad the sheet sits over your work instead of filling the screen.

Selecting and Deleting Plots

Tap Select in the toolbar to enter selection mode. Tap plots to select them, then Delete to remove them in batch.

You can also delete a single plot via long-press or from the detail view’s trash icon.

Clear All Plots in the … menu asks first, says how many will go, and keeps pinned plots; it is hidden when every plot is pinned. Select mode’s Delete also counts only unpinned plots.

Pinning Plots

Long-press a thumbnail and choose Pin to protect a plot. Pinned plots show an orange badge, must be unpinned before they can be removed, and survive a relaunch.

You can pin up to 20; a 21st asks you to unpin one (“Pin Limit Reached”). Pins don’t take room from new plots: the gallery also keeps your 20 newest unpinned ones.

Exporting Plots

There are two ways to get plots out of the app:

Quick share. Tap the share button in the detail view to use the iOS share sheet (Photos, AirDrop, clipboard, etc.). Plots go at full size as PNG. Saving to Photos asks only to add images; webRios never reads your library.

File export. Tap the export button (download icon) in the detail view. You can:

  • Choose a filename
  • Pick a format: PNG (lossless, supports transparency), JPEG (smaller files), or PDF (vector container, good for printing and papers)
  • Save to any location via the iOS file picker, including iCloud Drive, external drives, or other cloud storage

Tapping Save opens the iOS file picker, where you choose the destination.

Long-pressing a plot thumbnail in the gallery also gives you a quick Share option without needing to open the detail view first.

A Note on Storage

Pinned plots stay on your device between launches and are included in backups. Other plots last until you quit, and the gallery keeps the 20 newest. Restarting R or a low-memory warning removes nothing. Export or share any plot you want as a file.