【发布时间】:2018-03-14 13:13:04
【问题描述】:
我知道 renderPlot 生成的绘图可以显示在 Shiny plotOutput 函数上。我也知道 autoinvalidate() 有助于被动地计算数据。
我正在使用以下代码显示雷达图(实际上可以是任何图表):
output$plot2 <- renderPlot({
autoInvalidate()
p2<<-ggradar(mtcars_radar[i,])
})
我不知道如何在每次 autoinvalidate() 事件期间将 i 的值从 1 更改为 300。 或者无论如何我可以更改绘图中的数据行,以便绘图每秒钟使用新的数据行动态动画。 谁能帮帮我?
完整代码在这里:
library(shiny)
library(ggplot2)
mtcars %>%
rownames_to_column( var = "group" ) %>%
mutate_at(vars(-group),funs(rescale)) %>%
tail(4) %>% select(1:10) -> mtcars_radar
ui <- fluidPage(
sidebarPanel(
actionButton("button", "Go!")
),
# Show the plot
mainPanel(
plotOutput("plot2")
)
)
server <- function(input, output) {
library(ggplot2)
library(ggradar)
suppressPackageStartupMessages(library(dplyr))
library(scales)
autoInvalidate <- reactiveTimer(2000)
plot2 <- NULL
output$plot2 <- renderPlot({
ggradar(mtcars_radar[1,])
})
observeEvent(input$button,{
output$plot2 <- renderPlot({
autoInvalidate()
p2<<-ggradar(mtcars_radar[i,])
p2
})
})
}
# Run the application
shinyApp(ui = ui, server = server)
有什么帮助吗?
【问题讨论】:
标签: r shiny reactive-programming