如何在Shiny上使用insertUI为动态绘图添加书签?

时间:2018-12-29 15:14:35

标签: r shiny

我制作了一个应用程序,当我单击“生成图”时,它会生成2个图,但是当我尝试将此图添加为书签时,我不知道如何做,因为仅显示了一个图。

我正在做的是生成一个data.frame,在其中存储图的标题,然后使用“生成”按钮生成一个图。之后,考虑到data.frame位置,生成图。

这是我的代码:

library(shiny)
library(plotly)


k <<-0



ui <- function(request) {


  fluidPage(
   bookmarkButton(),
    textOutput("urlText"),
    textInput("title", "Plot title", ""),
    actionButton("add","Add Plot"),
    div(class="aux")
  )


}

server <- function(input, output, session) {

  addItem <- function(id) {
    insertUI(
      selector = ".aux",
      where="afterEnd",
      ui = plotlyOutput(id),
      immediate = TRUE
    )

  }

  for(i in 1:5){
  output[[paste0("plot",i)]]  <- renderPlotly({
    plot_ly(iris,x=~Petal.Length,y=~Species,type="scatter")%>%
      layout(title= data.title[i,"title"])

  })
  }






  observeEvent(input$add, {

    k <<- k+1
    if(input$add == 1){
      rm(list=ls())
      data.title <<- data.frame(title = input$title)

    }else{
      aux <- data.frame(title = input$title)
      data.title <<- rbind(data.title,aux)
    }
    id <- paste0("plot", input$add)
    addItem(id)

  }, ignoreInit = TRUE)



  onRestore(function(state) {
    for (i in seq_len(input$add))  {
      id <- paste0("plot", i)
      addItem(id)
    }
  })



}

enableBookmarking("server")
shinyApp(ui, server) 

0 个答案:

没有答案