Launch esquisse in a classic Shiny app.

esquisserServer(input, output, session, data = NULL,
  dataModule = c("GlobalEnv", "ImportFile"), sizeDataModule = "m")

esquisserUI(id, header = TRUE, container = esquisseContainer(),
  choose_data = TRUE, insert_code = FALSE)

esquisseContainer(width = "100%", height = "700px", fixed = FALSE)

Arguments

input, output, session

Standards shiny server arguments.

data

A reactiveValues with at least a slot data containing a data.frame to use in the module. And a slot name corresponding to the name of the data.frame.

dataModule

Data module to use, choose between "GlobalEnv" or "ImportFile".

sizeDataModule

Size for the modal window for selecting data.

id

Module's id.

header

Logical. Display or not esquisse header.

container

Container in which display the addin, default is to use esquisseContainer, see examples. Use NULL for no container (behavior in versions <= 0.2.1). Must be a function.

choose_data

Logical. Display or not the button to choose data.

insert_code

Logical, Display or not a button to insert the ggplot code in the current user script (work only in RStudio).

width, height

The width and height of the container, e.g. '400px', or '100%'; see validateCssUnit.

fixed

Use a fixed container, e.g. to use use esquisse full page. If TRUE, width and height are ignored. Default to FALSE. It's possible to use a vector of CSS unit of length 4 to specify the margins (top, right, bottom, left).

Value

A reactiveValues with 3 slots :

  • code_plot : code to generate plot.

  • code_filters : a list of length two with code to reproduce filters.

  • data : data.frame used in plot (with filters applied).

Note

For the module to display correctly, it is necessary to place it in a container with a fixed height. Since version >= 0.2.2, the container is added by default.

Examples

if (interactive()) { ### Part of a Shiny app ### library(shiny) library(esquisse) ui <- fluidPage( tags$h1("Use esquisse as a Shiny module"), radioButtons( inputId = "data", label = "Data to use:", choices = c("iris", "mtcars"), inline = TRUE ), esquisserUI( id = "esquisse", header = FALSE, # dont display gadget title choose_data = FALSE, # dont display button to change data, container = esquisseContainer(height = "700px") ) ) server <- function(input, output, session) { data_r <- reactiveValues(data = iris, name = "iris") observeEvent(input$data, { if (input$data == "iris") { data_r$data <- iris data_r$name <- "iris" } else { data_r$data <- mtcars data_r$name <- "mtcars" } }) callModule(module = esquisserServer, id = "esquisse", data = data_r) } shinyApp(ui, server) ### Whole Shiny app ### library(shiny) library(esquisse) # Load some datasets in app environment my_data <- data.frame( var1 = rnorm(100), var2 = sample(letters[1:5], 100, TRUE) ) ui <- fluidPage( esquisserUI( id = "esquisse", container = esquisseContainer(fixed = TRUE) ) ) server <- function(input, output, session) { callModule(module = esquisserServer, id = "esquisse") } shinyApp(ui, server) ## You can also use a vector of margins for the fixed argument, # useful if you have a navbar for example ui <- navbarPage( title = "My navbar app", tabPanel( title = "esquisse", esquisserUI( id = "esquisse", header = FALSE, container = esquisseContainer( fixed = c(50, 0, 0, 0) ) ) ) ) server <- function(input, output, session) { callModule(module = esquisserServer, id = "esquisse") } shinyApp(ui, server) }