knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-" )
Authors: Jason Bryer, Ph.D. and Bruce Dudek, Ph.D.
Website: https://visualstats.bryer.org/
r badger::badge_devel("jbryer/VisualStats", "blue")
r badger::badge_cran_release("VisualStats")
This package contains functions and Shiny applications designed to visualize statistical tests. The repository also contains a Quarto book. The latest version can be installed from Github using the remotes
package:
remotes::install_github('jbryer/VisualStats')
One of the primary goals of using the Quarto book website format is that Shiny applications can be embedded providing the reader the ability to interact with many of the statistical visualizations presented. The WebR project provides the framework for embedding R code within HTML pages. Ideally we would load the VisualStats
package in WebR and call the functions directly. Unfortunatley, the WebR framework does not support installing R packages from source (and according to their documentation, may likely never have this feature). However, it is possible to load R scripts from source. The goal here is to maximize the ways in which Shiny applications can be deployed (using Shiny server, running locally, and embedded in Quarto documents) while minimizing the code duplication.
When developing a new Shiny application, the app should be located in the R/
directory as R package functions (i.e. include Roxygen documentation). In particular there needs to be at least three functions (note that FEATURE
should be replaced with the name of the application):
#' Shiny UI #' @return a Shiny UI object. #' @export FEATURE_shiny_ui <- function() { # Shiny UI code here. Basic siderbar panel provided fluidPage( sidebarLayout( sidebarPanel( # Shiny inputs ), mainPanel(plotOutput("plot", height = '600px')) ) ) } #' Shiny server #' @param input Shiny input object. #' @param output Shiny output object. #' @param session Shiny session object. #' @return a function with Shiny server logic. #' @export FEATURE_shiny_server <- function(input, output, session) { # Shiny server code here output$plot <- renderPlot({ # Plotting code }) } #' Run the Shiny server #' @param ... other parameters passed to [shiny::shinyApp] #' @export FEATURE_shiny <- function(...) { shiny::shinyApp(ui = FEATURE_shiny_ui, server = FEATURE_shiny_server, ...) }
Note: Using shinylive to embed Shiny applications currently does not work consistently. For now Shiny applications are hosted using Shiny server and are embedded using HTML iframes.
Within the Quarto document where the Shiny application is to be embedded, add the following code in a shinylive-r
code chunk. Note that we need to source the R scripts containing the relevant functions. Since we are calling these functions outside of the VisualStats
R package any package dependencies need to be installed using teh webr::install
command and loaded using the library
command.
```{shinylive-r} #| label: fig-shiny-FEATURE #| viewerHeight: 600 #| standalone: true webr::install("ggplot2") library(ggplot2) # Include any R scripts that have the implementation of any R functions used source('https://raw.githubusercontent.com/jbryer/VisualStats/main/R/FEATURE_vis.R') # Include R script defining the Shiny UI and server source('https://raw.githubusercontent.com/jbryer/VisualStats/main/R/FEATURE_shiny.R') shinyApp(ui = FEATURE_shiny_ui, server = FEATURE_shiny_server) ```
To deploy the application using Shiny server, create a file called app.R
with the following (these are also included in the inst/shiny
directory):
library(VisualStats) shinyApp(ui = FEATURE_shiny_ui, server = FEATURE_shiny_server)
Please note that the VisualStats project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.