Анимированный точечный сюжет в блестящей - PullRequest
0 голосов
/ 31 августа 2018

Можете ли вы предложить способ добавить анимированный точечный график / полосчатую диаграмму к shiny, пожалуйста.

цифра, которую я пытаюсь добавить,

x = sample(1:10, 100, TRUE)

for(i in seq_along(x)){
  stripchart(x[1:i], method="stack", at=0.05, frame.plot=FALSE, xaxt="n", xlim=range(x))
  axis(1, pretty(x))
  Sys.sleep(0.05)
}

(в идеале я бы хотел, чтобы это было быстрее, чем 0,05, но R baulks)

Когда я пытаюсь сделать это в shiny, он задерживается, а затем строит график за один ход. (ggplotly не похоже на опцию )


Тест shiny код:

library(shiny)

ui = fluidPage( plotOutput("plot") )

server = function(input, output, session) {
  x = sample(1:10, 100, TRUE)
  rng = range(x)
  output$plot <- renderPlot({
      for(i in seq_along(x)){
      stripchart(x[1:i], method="stack", at=0.05, frame.plot=FALSE, 
                 pch=16, cex=2, xaxt="n", xlim=rng)
      axis(1, pretty(x))
      Sys.sleep(0.05)
      }})}

shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 31 августа 2018

Следуя советам Стефана Лорана по использованию ползунков на боковой панели, вы можете использовать значения ползунка для подстановки данных, которые передаются в stripchart.

library(shiny)

ui <- fluidPage(    
  titlePanel("Sliders"),
  sidebarLayout(
    sidebarPanel(
      sliderInput("animation", "Looping Animation:",
                  min = 0, max = 100,
                  value = 1, step = 10,
                  animate = animationOptions(interval = 300, loop = FALSE))
    ),
    mainPanel(plotOutput("plot"))
    ))

server <- function(input, output) {

  x = sample(1:10, 100, TRUE)

  sliderValues <- reactive({ (input$animation)})

  output$plot <- renderPlot({
      stripchart(x[1:sliderValues()], method="stack", at=0.05, frame.plot=FALSE, 
           pch=16, cex=2, xaxt="n", xlim=range(x))
      axis(1, pretty(x))
  })    
}

# Create Shiny app ----
shinyApp(ui, server)
...