#r #shiny #shinydashboard #shiny-server
#r #блестящий #shinydashboard #shiny-сервер
Вопрос:
Я работаю над приложением R-Shiny. Я использовал следующий код (демонстрационный код) для взаимодействия с графиком.
ui <- shinyUI(fluidPage(
titlePanel("Title"),
sidebarLayout(
sidebarPanel(
),
mainPanel(
plotOutput("graph", width = "100%", click = "plot_click"),
verbatimTextOutput("click_info")
)
)
)
)
server <- shinyServer(function(input, output, session) {
observe({
output$graph <- renderPlot({
plot(1, 1)
})
})
# interaction click in graph
observe({
if(is.null(input$plot_click$x)) return(NULL)
x <- sample(20:30,1,F)
isolate({
output$graph <- renderPlot({
draw.single.venn(x)
})
})
})
})
shinyApp(ui=ui,server=server)
Он может изменить график одним щелчком мыши. Я хочу вернуться к самому первому сюжету, используя кнопку сброса. Пожалуйста, помогите.
Ответ №1:
Я добавил кнопку сброса на вашу боковую панель. Надеюсь, это полезно. Эта ссылка предоставляет больше информации о том, как выполнить этот тип функциональности.
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel("Title"),
sidebarLayout(
sidebarPanel(
actionButton("Reset", label="Reset Graph")
),
mainPanel(
plotOutput("graph", width = "100%", click = "plot_click"),
verbatimTextOutput("click_info")
)
)
)
)
server <- shinyServer(function(input, output, session) {
observeEvent(input$Reset,{ output$graph <- renderPlot({ plot(1, 1) }) }, ignoreNULL = F)
# interaction click in graph
observe({
if(is.null(input$plot_click$x)) return(NULL)
x <- sample(20:30,1,F)
isolate({
output$graph <- renderPlot({
draw.single.venn(x)
})
})
})
})
shinyApp(ui=ui,server=server)
Комментарии:
1. Нет необходимости повторять код:
observeEvent(input$Reset,{ output$graph <- renderPlot({ plot(1, 1) }) }, ignoreNULL = F)
2. У вас могут быть утечки памяти, при которых рендеринг и другие тяжелые операции внутри наблюдаются, попробуйте добавить больший набор данных, вы поймете, что я имею в виду
3. Спасибо за решение. Сообщит вам, если возникнет какая-либо проблема.
4. @olorcain Еще одна вещь. Какие изменения я предполагаю сделать, чтобы вернуться к предыдущему графику (не к первому).
5. Я думаю, что вернуться к предыдущему пользовательскому графику будет сложнее, чем вернуться к фиксированной начальной точке. Возможно, вам потребуется сохранить список параметров графика, на которые вы можете ссылаться и загружать. Я думаю, что это должен быть новый вопрос.