我制作了一个应用程序,当我单击“生成图”时,它会生成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)