如何根据滑块输入值的增量为R Shiny图的输出设置动画?

时间:2019-03-25 17:47:42

标签: r ggplot2 shiny slider shiny-reactivity

我已经浏览了R Shiny教程和stackoverflow,以获取与查询有关的答案。我通常要等待3-4天才能解决编码问题,然后再尝试发布。

我的UI中有一个动画滑块,该滑块在列中的时间间隔内循环(列a)。我正在尝试制作一个动画线图,该图绘制另一列(b列)的y值,对应于该时间间隔的nrow()。滑块工作正常,但是我无法绘制输出。

我可能错过了一些与Shiny应用程序中的反应性相关的概念。感谢我可以与我的查询相关的任何指导。如果需要,我很乐意发布更多信息。

a <- c(0,1,2,3,4,5,6)    
b <- c(50,100,40,30,20,80)    

mydata <- cbind(a,b)    
mydata <- as.data.frame(mydata())

ui <- fluidPage (

  headerPanel("basic app"),

  sidebarPanel(

    sliderInput("slider",
                label = "Time elapsed",
                min = 0,
                max = nrow(mydata()),
                value = 1, step = 1,
                animate =
                  animationOptions(interval = 200, loop = TRUE))
  ),
  mainPanel(
    plotlyOutput("plot")
  )
)

server <- function(input, output) {
  sliderValues <- reactive({
    data.frame(
      Name = "slider",
      Value = input$slider)
  })
  output$plot <- renderPlot({
    x<- as.numeric(input$slider)
    y <- as.numeric(b[x])
    ggplot(mydata,aes_string(x,y))+ geom_line()
  })
}



作为演示,我希望动画图可以这样显示,但要与UI滑块值相对应:

library(gganimate)
library(ggplot2)
fake <- c(1,10)
goods <- c(11,20)
fakegoods <- cbind(fake,goods)
fakegoods <- data.frame(fakegoods)
ggplot(fakegoods, aes(fake, goods)) + geom_line() + transition_reveal(1, fake)

1 个答案:

答案 0 :(得分:0)

这能完成您想要的吗?请注意,我从向量0中删除了第一个元素a,因为您的原始示例在a中的元素要多于b,为了使它们成为{{ 1}}的长度必须相同。

cbind