Программное управление воспроизведением / паузой на слайдере R-Shiny с анимацией - PullRequest
0 голосов
/ 29 сентября 2018

Я хочу, чтобы пользователь манипулировал слайдером, чтобы ответить на вопрос.Чтобы проверить, верны ли они, ползунок переместится к правильному ответу после нажатия кнопки «Проверить».Круговая диаграмма будет двигаться одновременно.Я думаю, что это может быть возможно при использовании Shiny с параметрами анимации слайдера.Однако я не знаю, как включать и выключать анимацию программно.Или, если есть возможность уменьшить значение ползунка - например, перейти с 80% до 60%.

Вы можете смоделировать желаемое поведение, запустив приведенный ниже код.Слайдер начинается с 60. Нажмите play и нажмите pause, когда слайдер достигнет 80. Как можно программно сделать то же самое?т.е. нажмите кнопку «Проверить», и круговая часть автоматически увеличится с 40% до 60%.

library(shiny)
library(ggplot2)
library(scales)

ui <- fluidPage(


  # App title ----
  titlePanel("How Many Canadians Speak French?"),

  # Sidebar layout with input and output definitions ----
  sidebarLayout(

    # Sidebar to demonstrate various slider options ----
    sidebarPanel(

      # Size of slice A, B is determined automagically
      sliderInput("per_a", "Percent French Speaking",
                  min = 0, max = 100,
                  value = 60, step = 1,
                  animate = animationOptions(interval = 300, loop = TRUE)),
      actionButton(
        inputId = "check",
        label = "Check"
      )
    ),
    # Main panel for displaying outputs ----
    mainPanel(
      plotOutput(outputId = "pieChart")

    )
  )
)


# Define server logic for slider examples ----
server <- function(input, output, session) {
  df <- data.frame(
    group = c("English", "French"),
    value = c(40, 60)
  )

  # Functions
  draw_plot <- function(df) {
    bp <- ggplot(df, aes(x = "", y = value, fill = group)) +
      geom_bar(width = 1, size = 1, color = "grey23", stat = "identity")

    pie <- bp + coord_polar("y", start = 0)
    pie + 
      theme(axis.text.x = element_blank(),
            axis.title.x = element_blank(),
            axis.title.y = element_blank(),
            panel.border = element_blank(),
            panel.grid = element_blank(),
            legend.position = "none",
            axis.ticks = element_blank(),
            plot.title = element_text(size = 19, face = "bold")) +
      geom_text(aes(label = paste0(round(value), "% ", c("English", "French"))), 
                position = position_stack(vjust = 0.5), 
                color = "white", size = 6) +
      labs(x = NULL, y = NULL, title = "") +
      scale_fill_manual(values = c("red4", "#003399")) # Pie chart colours: English, French
  }

  output$pieChart <- renderPlot({
    df$value[2] <- input$per_a
    df$value[1] <- 100 - input$per_a
    draw_plot(df)
  })

  observeEvent(input$check, {
    # Insert code here that starts the slider animation at current value and stops it at 80
   })  
}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...