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

320

Version

1.1.2

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Maciej Pacula

Last Published

July 31st, 2025

Functions in gofigR (1.1.2)

create_asset

Creates a new asset
create_asset_revision

Creates a new asset revision
create_figure

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

Returns a default value if argument is null or empty
create_api_key

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

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

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

Enables GoFigr in the current R/Rmd file.
gfPlotServer

Creates a Shiny component to handle plotting and publishing. Has to be paired with a gfPlot element in the UI.
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.
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.
find_workspace

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

Fetches a revision given an API ID.
get_analysis

Fetches an analysis given an API ID.
intercept

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

Defines a GoFigr plot area.
get_qr_png

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

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

Fetches a figure given an API ID.
find_figure

Finds a figure by name
get_asset_revision

Gets an asset revision given an API ID
find_asset_by_name

Finds an asset by name
get_revision_url

Gets the full URL for a revision
get_title

Gets a title from a plot
find_asset_revision_by_hash

Finds all asset revisions with a matching hash digest
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.
get_asset

Fetches an asset given an API ID.
get_options

Gets configured GoFigr options.
gofigr_make_handler

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

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

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

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

Creates a GoFigr data object to store text
ggwatermark

Applies a watermark to a plot object/function.
get_client

Gets the currently configured GoFigr client
make_code_data

Creates a GoFigr data object storing source code
publish

Publishes a figure to the GoFigr service.
update_revision_data

Updates data associated with a figure
make_file_data

Creates a GoFigr data object storing file data
user_info

Fetches user details for the currently logged in user.
print.gofigr_revision

Default print method for GoFigr revisions.
is_expired_token

Returns True if the response indicates an expired JWT token
list_workspaces

List all workspaces available to the user.
publish_base

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

Default print representation of GoFigr data objects.
is_intercept_on

Checks whether GoFigr intercept is on
list_analyses

Lists analyses under a workspace.
read_csv

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

Plots and publishes an object (if supported)
gofigr_PUT

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

Prints and publishes an object (if supported)
make_image_data

Creates a GoFigr data object storing image data
gofigr_cat

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

Retrieves workspace details.
get_execution_context

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

Syncs a file with the GoFigr service
stack_horizontally

Stacks images horizontally, centering them vertically.
gofigr_GET

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

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

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

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

Stacks images vertically, centering them horizontally.
gfContainer

Generates a div container for the GoFigr widget.
make_raw_data

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

Creates a new asset revision from file.
print.gofigr

Default print method for a GoFigr client.
gofigr_PATCH

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

Wrapper for httr::POST that automatically handles authentication.
read.csv

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

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

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

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

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

Reads a prompt from stdin and performs optional validation
set_options

Sets GoFigr options.
response_to_JSON

Convenience function for parsing JSON from httr responses
read_config

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

Suppresses any automatic GoFigr publication hooks.
read_csv2

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

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

Makes a watermark generator. You can use the result with enable(watermark=...).
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.
refresh_jwt

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

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

Draws a watermark with a GoFigr link and a QR code
asset_linked_to_figure

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

Draws a watermark with just a GoFigr link
create_analysis

Creates a new analysis
NO_WATERMARK

Does not draw any watermarks.
cat.gofigr_revision

Default cat method for GoFigr revisions.
check_configured

Checks whether GoFigr has been correctly configured.
create_revision

Creates a new revision
authenticate_jwt

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

Default path to the config file
DATA_TYPES

List of data types supported by GoFigr
calc_checksum

Calculates a checksum for a file
create_workspace

Creates a new workspace
delete_analysis

Deletes an analysis given an API ID.