How do you hide rendered shiny
output? Specifically, I have some figures/tables generated by shiny
and I have a button, that when clicked should hide the figures/tables, and when clicked again should show them.
This is what I have so far (below), and it works somewhat, but where it's supposed to hide the renderPlot
output, there is a big blank space in the document that I am trying to make go away.
It should be possible to just copy and paste this code into Rstudio and hit run document (it's rmarkdown with shiny runtime).
---
runtime: shiny
---
```{r, echo=F}
actionButton("hide", "Hide")
dat <- data.frame(a=1:10, b=rexp(10, 1/10), c=letters[sample(1:24, 10)])
renderTable({
if (input$hide %% 2 == 1)
dat
})
```
lodi dodi
```{r, echo=F}
renderPlot({
if (input$hide %% 2 == 1)
plot(b ~ a, data=dat)
})
```
this text is separated by blank space, but it shouldn't be
You can use the shinyjs
package to hide elements with the hide()
function (or use the toggle()
function to alternate between hiding and showing). Disclaimer: I wrote that package.
I've never used it in an rmarkdown before, so I'm just going to show how to use it in a normal shiny app and use the shinyApp()
function to include a full shiny app inside an rmarkdown. You can read here about how to include shiny apps inside an rmarkdown doc.
---
runtime: shiny
---
```{r, echo=F}
suppressPackageStartupMessages(
library(shinyjs)
)
dat <- data.frame(a=1:10, b=rexp(10, 1/10), c=letters[sample(1:24, 10)])
shinyApp(
ui = fluidPage(
useShinyjs(),
actionButton("hide", "Hide"),
p("Text above plot"),
plotOutput("plot"),
p("Text below plot")
),
server = function(input, output, session) {
output$plot <- renderPlot({
plot(b ~ a, data=dat)
})
observeEvent(input$hide, {
hide("plot")
# toggle("plot") if you want to alternate between hiding and showing
})
},
options = list(height = 700)
)
```
In order to be able to use hide, I had to:
shinyjs
useShinyjs()
in the UIhide
or toggle
on the element that you want to hide/showI hope this helps
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With