Learn R Programming

gofigR

gofigR is the R client for https://gofigr.io, a zero-effort reproducibility engine. It works with any R library which outputs to R graphics devices.

Compatibility

gofigR integrates with R markdown, both in knitr and in interactive sessions in RStudio. GoFigr also works in scripts. We tested with R 4.3.2 but any reasonably recent version should work.

Installation

library(devtools)
devtools::install_github("gofigr/gofigR")

Configuration

On the R prompt, simply load the gofigR package and call gfconfig(). You only need to do this once.

If you don't have an account, you can register at https://app.gofigr.io/register.

> library(gofigR)
Attaching package: ‘gofigR’

> gfconfig()
-------------------------------------------------------------------

Welcome to GoFigr! This wizard will help you get up and running.

-------------------------------------------------------------------


Username: publicdemo
Testing connection...

  => Success

API key (leave blank to generate a new one): 
Key name (e.g. Alyssa's laptop): my API key
Fetching workspaces...

1. Scratchpad - e5249bed-40f0-4336-9bd3-fef30d3ed10d

Please select a default workspace (1-1): 1

Configuration saved to /Users/maciej/.gofigr. Happy analysis!

Usage

To enable GoFigr, simply call enable in your setup chunk. You can also optionally specify an analysis_name (it will be created automatically if it doesn't exist).

```{r setup, include=FALSE}
library(gofigR)
gofigR::enable()
```

Publishing plots

To publish plots, simply call publish:

hm1 <- Heatmap(matrix(rnorm(100), nrow=10, ncol=10))

publish(hm1, "Heatmaps are cool!")  # second argument is the figure name

# This works, too
hm1 %>% publish("Heatmaps are cool!")

Capturing base graphics

To capture output from base R plotting, call publish with a plotting expression:

gofigR::publish({
  base::plot(pressure, main="Pressure vs temperature")
  text(200, 50, "Note the non-linear relationship")
}, data=pressure, figure_name="Pressure vs temperature")

gofigR::publish({
  # The mtcars dataset:
  data <- as.matrix(mtcars)

  coul <- colorRampPalette(brewer.pal(8, "PiYG"))(25)
  heatmap(data, scale="column", col = coul, main="Visualizing mtcars")
}, data=mtcars, figure_name="Cars")

Note the optional data argument following the expression. It specifies the data which you want to associate with the figure -- it will show up under "files" (as .RDS) once published.

Shiny

You can replace plotOutput + renderPlot with gfPlot + gfPlotServer and give your users the ability to publish interactive plots to GoFigr. For example:

library(shiny)
library(gofigR)

gofigR::enable()

# Define UI for application that draws a histogram
ui <- fluidPage(
  # Application title
  titlePanel("Old Faithful Geyser Data"),

  # Sidebar with a slider input for number of bins
  sidebarLayout(
    sidebarPanel(
      sliderInput("bins",
                  "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)
    ),

    # Show a plot of the generated distribution
    mainPanel(
      gfPlot("distPlot"),
    )
  )
)

# Define server logic required to draw a histogram
server <- function(input, output) {

  gfPlotServer("distPlot", {
    # generate bins based on input$bins from ui.R
    x    <- faithful[, 2]
    bins <- seq(min(x), max(x), length.out = input$bins + 1)

    # draw the histogram with the specified number of bins
    hist(x, breaks = bins, col = 'darkgray', border = 'white',
         xlab = 'Waiting time to next eruption (in mins)',
         main = 'Histogram of waiting times')
  }, input, figure_name="Old faithful waiting times")
}

# Run the application
shinyApp(ui = ui, server = server)

Note that we pass input to gfPlotServer. This will capture your current Shiny inputs – they will become available under the "Metadata" tab in GoFigr.

Interactive use

We support knitr as well as interactive sessions in RStudio.

Copy Link

Version

Install

install.packages('gofigR')

Monthly Downloads

184

Version

1.1.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Maciej Pacula

Last Published

July 18th, 2025

Functions in gofigR (1.1.0)

get_api_id

Returns obj$api_id if argument is an object, or identity if it's a string.
calc_checksum

Calculates a checksum for a file
authenticate_jwt

Performs JWT authentication with username and password. Saves tokens in the GoFigr client.
delete_analysis

Deletes an analysis given an API ID.
create_asset_revision

Creates a new asset revision
get_qr_png

Generates a QR code and converts it into an img element.
get_analysis

Fetches an analysis given an API ID.
is_expired_token

Returns True if the response indicates an expired JWT token
get_asset

Fetches an asset given an API ID.
find_workspace

Finds a workspace by name, optionally creating it if doesn't exist
get_title

Gets a title from a plot
gf_plot

Plots and publishes an object (if supported)
get_revision_url

Gets the full URL for a revision
get_client

Gets the currently configured GoFigr client
encode_raw_data

Converts a GoFigr data object into R primitives that can be converted to JSON, performing base64 encoding of binary data.
find_analysis

Finds an analysis by name, optionally creating one if it doesn't exist.
get_revision

Fetches a revision given an API ID.
gfconfig

Configures gofigr for use on this machine. Saves configuration to ~/.gofigr.
enable

Enables GoFigr in the current R/Rmd file.
get_asset_revision

Gets an asset revision given an API ID
gf_print

Prints and publishes an object (if supported)
ggwatermark

Applies a watermark to a plot object/function.
gofigr_PATCH

Wrapper for httr::PATCH that automatically handles authentication.
gofigr_POST

Wrapper for httr::POST that automatically handles authentication.
make_code_data

Creates a GoFigr data object storing source code
make_file_data

Creates a GoFigr data object storing file data
new_asset_revision_from_file

Creates a new asset revision from file.
print.gofigr

Default print method for a GoFigr client.
make_table_data

Creates a GoFigr data object storing data.frame/tabular data
gfPlot

Defines a GoFigr plot area.
gfPlotServer

Creates a Shiny component to handle plotting and publishing. Has to be paired with a gfPlot element in the UI.
user_info

Fetches user details for the currently logged in user.
watermark_generator

Makes a watermark generator. You can use the result with enable(watermark=...).
publish_base

Captures output from grid graphics (ggplot2, lattice, ComplexHeatmap, etc.) and publishes it to GoFigr.
make_text_data

Creates a GoFigr data object to store text
publish

Publishes a figure to the GoFigr service.
is_intercept_on

Checks whether GoFigr intercept is on
suppress

Suppresses any automatic GoFigr publication hooks.
stack_vertically

Stacks images vertically, centering them horizontally.
find_asset_by_name

Finds an asset by name
gofigr_PUT

Wrapper for httr::PUT that automatically handles authentication.
get_data

Retrieves a data object. Use in conjunction with get_revision or get_asset_revision, to retrieve the full data for a data object.
find_asset_revision_by_hash

Finds all asset revisions with a matching hash digest
find_figure

Finds a figure by name
default_if_null

Returns a default value if argument is null or empty
create_workspace

Creates a new workspace
sync_file

Syncs a file with the GoFigr service and stores a reference. The file will be associated with all figures published after this call.
read_config

Reads the GoFigr configuration, prioritizing environment variables over the config file:
make_raw_data

Creates a GoFigr data object which can be attached to revisions.
get_execution_context

Gets the execution context: input path, chunk code, and other metadata.
gofigr_DELETE

Wrapper for httr::DELETE that automatically handles authentication.
gofigr_GET

Wrapper for httr::GET that automatically handles authentication.
gofigr_cat

Equivalent to cat but only outputs if GoFigr client is verbose.
get_figure

Fetches a figure given an API ID.
login_with_api_key

Prompts the user for an API key or creates a new one
intercept

Wraps a plotting function (e.g. plot) so that its output is intercepted by GoFigr.
infer_workspace

Returns the argument if a valid workspace is passed, or the default workspace from the GoFigr client otherwise. Throws an error if both are NULL.
login_with_username

Prompts the user for username & password and logs into GoFigr
read_prompt

Reads a prompt from stdin and performs optional validation
make_image_data

Creates a GoFigr data object storing image data
get_options

Gets configured GoFigr options.
with_isolated_devices

Executes an expression while isolating any new graphics devices it creates.
sync_workspace_asset

Syncs a file with the GoFigr service
set_options

Sets GoFigr options.
response_to_JSON

Convenience function for parsing JSON from httr responses
refresh_jwt

Refreshes the JWT access token. Attempts re-authentication if refresh fails.
stack_horizontally

Stacks images horizontally, centering them vertically.
gfContainer

Generates a div container for the GoFigr widget.
gofigr_client

Creates and configures a GoFigr client. You can login either using a username & password or an API key. See examples.
list_analyses

Lists analyses under a workspace.
gofigr_make_handler

Wraps an HTTR method e.g. GET to provide relative URL resolution and authentication
get_workspace

Retrieves workspace details.
print.gofigrdata

Default print representation of GoFigr data objects.
list_workspaces

List all workspaces available to the user.
print.gofigr_revision

Default print method for GoFigr revisions.
try_base2grob

Tries to convert expression to a grob, returning it unchanged if it fails.
update_revision_data

Updates data associated with a figure
NO_WATERMARK

Does not draw any watermarks.
LINK_WATERMARK

Draws a watermark with just a GoFigr link
asset_linked_to_figure

Creates an object representing a relationship between a figure and an asset.
QR_WATERMARK

Draws a watermark with a GoFigr link and a QR code
cat.gofigr_revision

Default cat method for GoFigr revisions.
check_configured

Checks whether GoFigr has been correctly configured.
create_analysis

Creates a new analysis
create_api_key

Creates a new API key. This function will only succeed if using password authentication.
find_config

Finds the .gofigr config file in current directory or any of the parent directories. If the file cannot be found, will also check CONFIG_PATH.
create_asset

Creates a new asset
CONFIG_PATH

Default path to the config file
DATA_TYPES

List of data types supported by GoFigr
create_figure

Creates a new figure. The created figure will be blank and won't contain any revisions.
create_revision

Creates a new revision