Save a bscui widget to an image file
Arguments
- widget
a
bscui
object- file
name of output file. Should end with an image file type (.png, .jpg, .jpeg, or .webp) or .pdf.
- selector
(
webshot2::webshot()
) one or more CSS selectors specifying a DOM element to set the clipping rectangle to (default: ".bscui").- zoom
(
webshot2::webshot()
) If TRUE (default), status updates via console messages are suppressed.- quiet
(
webshot2::webshot()
) a number specifying the zoom factor.- ...
additional parameters for
webshot2::webshot()
suppressed.
Value
Invisibly returns the normalized path to the image. The character vector will have a class of "webshot".
Examples
##################################@
### Preparing data ----
library(bscui)
library(xml2)
library(readr)
library(dplyr)
svg <- xml2::read_xml(system.file(
"examples", "Animal_cells.svg.gz",
package="bscui"
))
info <- readr::read_tsv(system.file(
"examples", "uniprot_cellular_locations.txt.gz",
package="bscui"
), col_types=strrep("c", 6)) |>
mutate(id = sub("-", "", `Subcellular location ID`))
##################################@
### Building the figure ----
figure <- bscui(svg) |>
set_bscui_ui_elements(
info |>
mutate(
ui_type = "selectable",
title = Name
) |>
select(id, ui_type, title)
) |>
set_bscui_styles(
info |>
filter(Name == "Cytosol") |>
mutate(fill = "#FF7F7F") |>
select(id, fill)
) |>
set_bscui_attributes(
info |>
filter(Name == "Cytoskeleton") |>
mutate(display = "none") |>
select(id, display)
) |>
set_bscui_selection("SL0188") |>
set_bscui_options(zoom_min=1, clip=TRUE)
figure
##################################@
### Saving the figure ----
if(interactive()){
## Temporary directory to save example file
tdir <- tempdir()
## Interactive html file
f_path <- file.path(tdir, "figure.html")
figure |> htmlwidgets::saveWidget(file=f_path)
cat(f_path)
## PNG image
f_path <- file.path(tdir, "figure.png")
figure |>
set_bscui_options(show_menu = FALSE) |>
export_bscui_to_image(file=f_path, zoom=2)
cat(f_path)
}