Asynchronous HTTP server graphics device.
Maintainer: Florian Rupprecht floruppr@gmail.com (ORCID)
Other contributors:
Kun Ren mail@renkun.me [contributor]
Jeroen Ooms jeroen@berkeley.edu (ORCID) [contributor]
Useful links:
Report bugs at https://github.com/nx10/httpgd/issues
This function initializes a httpgd graphics device and starts a local webserver, that allows for access via HTTP and WebSockets. A link will be printed by which the web client can be accessed using a browser.
hgd( host = getOption("httpgd.host", "127.0.0.1"), port = getOption("httpgd.port", 0), cors = getOption("httpgd.cors", FALSE), token = getOption("httpgd.token", TRUE), silent = getOption("httpgd.silent", FALSE), width = getOption("httpgd.width", 720), height = getOption("httpgd.height", 576), zoom = getOption("httpgd.zoom", 1), bg = getOption("httpgd.bg", "white"), pointsize = getOption("httpgd.pointsize", 12), system_fonts = getOption("httpgd.system_fonts", list()), user_fonts = getOption("httpgd.user_fonts", list()), reset_par = getOption("httpgd.reset_par", FALSE) )
hgd( host = getOption("httpgd.host", "127.0.0.1"), port = getOption("httpgd.port", 0), cors = getOption("httpgd.cors", FALSE), token = getOption("httpgd.token", TRUE), silent = getOption("httpgd.silent", FALSE), width = getOption("httpgd.width", 720), height = getOption("httpgd.height", 576), zoom = getOption("httpgd.zoom", 1), bg = getOption("httpgd.bg", "white"), pointsize = getOption("httpgd.pointsize", 12), system_fonts = getOption("httpgd.system_fonts", list()), user_fonts = getOption("httpgd.user_fonts", list()), reset_par = getOption("httpgd.reset_par", FALSE) )
host |
Server hostname. Set to |
port |
Server port. If this is set to |
cors |
Toggles Cross-Origin Resource Sharing (CORS) header.
When set to |
token |
(Optional) security token. When set, all requests
need to include a token to be allowed. (Either in a request header
( |
silent |
When set to |
width |
Initial plot width (pixels). |
height |
Initial plot height (pixels). |
zoom |
Initial plot zoom level (For example: 2 corresponds to 200%, 0.5 would be 50%.). |
bg |
Background color. |
pointsize |
Graphics device point size. |
system_fonts |
Named list of font names to be aliased with
fonts installed on your system. If unspecified, the R default
families |
user_fonts |
Named list of fonts to be aliased with font files
provided by the user rather than fonts properly installed on the
system. The aliases can be fonts from the fontquiver package,
strings containing a path to a font file, or a list containing
|
reset_par |
If set to |
All font settings and descriptions are adopted from the excellent 'svglite' package.
No return value, called to initialize graphics device.
## Not run: hgd() # Initialize graphics device and start server hgd_browse() # Or copy the displayed link in the browser # Plot something x <- seq(0, 3 * pi, by = 0.1) plot(x, sin(x), type = "l") dev.off() # alternatively: hgd_close() ## End(Not run)
## Not run: hgd() # Initialize graphics device and start server hgd_browse() # Or copy the displayed link in the browser # Plot something x <- seq(0, 3 * pi, by = 0.1) plot(x, sin(x), type = "l") dev.off() # alternatively: hgd_close() ## End(Not run)
This function will only work after starting a device with hgd()
.
hgd_browse(..., which = dev.cur(), browser = getOption("browser"))
hgd_browse(..., which = dev.cur(), browser = getOption("browser"))
... |
Parameters passed to |
which |
Which device (ID). |
browser |
Program to be used as HTML browser. |
URL.
## Not run: hgd() hgd_browse() # open browser hist(rnorm(100)) dev.off() ## End(Not run)
## Not run: hgd() hgd_browse() # open browser hist(rnorm(100)) dev.off() ## End(Not run)
This achieves the same effect as grDevices::dev.off()
,
but will only close the device if it has the httpgd type.
hgd_close(which = dev.cur(), all = FALSE)
hgd_close(which = dev.cur(), all = FALSE)
which |
Which device (ID). |
all |
Should all running httpgd devices be closed. |
Number and name of the new active device (after the specified device has been shut down).
## Not run: hgd() hgd_browse() # open browser hist(rnorm(100)) hgd_close() # Equvalent to dev.off() hgd() hgd() hgd() hgd_close(all = TRUE) ## End(Not run)
## Not run: hgd() hgd_browse() # open browser hist(rnorm(100)) hgd_close() # Equvalent to dev.off() hgd() hgd() hgd() hgd_close(all = TRUE) ## End(Not run)
Access status information of a httpgd graphics device.
This function will only work after starting a device with hgd()
.
hgd_details(which = dev.cur())
hgd_details(which = dev.cur())
which |
Which device (ID). |
List of status variables with the following named items:
$host
: Server hostname,
$port
: Server port,
$token
: Security token,
$hsize
: Plot history size (how many plots are accessible),
$upid
: Update ID (changes when the device has received new information),
$active
: Is the device the currently activated device.
## Not run: hgd() hgd_details() plot(1, 1) hgd_details() dev.off() ## End(Not run)
## Not run: hgd() hgd_details() plot(1, 1) hgd_details() dev.off() ## End(Not run)
This is mainly used internally by httpgd, but exposed for testing purposes.
hgd_generate_token(len)
hgd_generate_token(len)
len |
Token length (number of characters). |
Random token string.
hgd_generate_token(6)
hgd_generate_token(6)
Generate URLs to the plot viewer or to plot SVGs.
This function will only work after starting a device with hgd()
.
hgd_url( endpoint = "live", which = dev.cur(), host = NA, port = NA, explicit = FALSE, omit_token = FALSE, ... )
hgd_url( endpoint = "live", which = dev.cur(), host = NA, port = NA, explicit = FALSE, omit_token = FALSE, ... )
endpoint |
API endpoint. The default, |
which |
Which device (ID). |
host |
Replaces hostname. |
port |
Replaces port. |
explicit |
Ads |
omit_token |
Should the security token be omitted from the URL. |
... |
Other query parameters that will be appended to the URL. |
Note: If the included client is used set websockets=0
or
sidebar=0
to turn off WebSocket or plot history sidebar.
URL.
## Not run: hgd() my_url <- hgd_url() hgd_url(0) hgd_url(plot_id(), width = 800, height = 600) dev.off() ## End(Not run)
## Not run: hgd() my_url <- hgd_url() hgd_url(0) hgd_url(plot_id(), width = 800, height = 600) dev.off() ## End(Not run)
Global option viewer
needs to be set to a function that accepts the client
URL as a parameter.
hgd_view()
hgd_view()
This function will only work after starting a device with hgd()
.
viewer
function return value.
## Not run: hgd() hgd_view() hist(rnorm(100)) dev.off() ## End(Not run)
## Not run: hgd() hgd_view() hist(rnorm(100)) dev.off() ## End(Not run)
This function may be used to rapidly develop visualizations by replacing a workflow of reloading and executing code manually.
hgd_watch( watch = list.files(pattern = "\\.R$", ignore.case = T), on_change = function(changed_files) { print(changed_files) }, interval = 1, on_start = hgd_browse, on_exit = NULL, on_error = print, reset_par = TRUE, ... )
hgd_watch( watch = list.files(pattern = "\\.R$", ignore.case = T), on_change = function(changed_files) { print(changed_files) }, interval = 1, on_start = hgd_browse, on_exit = NULL, on_error = print, reset_par = TRUE, ... )
watch |
Paths that are watched for changes (see |
on_change |
Will be called when a file changes. |
interval |
Time interval in which changes are detected (in seconds). |
on_start |
Will be called after the httpgd server is started
(may be set to |
on_exit |
Will be called before the server is closed
(may be set to |
on_error |
Will be called when on_change throws an error
(may be set to |
reset_par |
If set to |
... |
Additional parameters passed to |
## Not run: # --- my_code.R --- plot(rnorm(100), col = "red") # --- Other file / interactive --- hgd_watch( watch = "my_code.R", # When my_code.R changes... on_change = function(...) { source("my_code.R") # ...call updated plot function. } ) ## End(Not run)
## Not run: # --- my_code.R --- plot(rnorm(100), col = "red") # --- Other file / interactive --- hgd_watch( watch = "my_code.R", # When my_code.R changes... on_change = function(...) { source("my_code.R") # ...call updated plot function. } ) ## End(Not run)