使用Shiny

时间:2018-09-12 05:40:45

标签: r shiny r-plotly

我正在创建一个POC,实时更新将反映在我的闪亮应用程序上。这个想法是绘制从服务器生成的数据的频率分布图。由于我还没有访问服务器的权限,因此我模拟了一个数据创建并将其馈送到我的绘图中。我可以在控制台上正确看到数据,但是应用程序上没有任何显示。我敢肯定,我缺少一些东西。我认为无法查看绘图的原因是因为数据的更新速度快于渲染速度。有什么办法可以修改它。

library(shiny)
library(magrittr)
library(plotly)


ui <- shinyServer(fluidPage(
  plotOutput("plot")
))


alarms = c("NodeDown","GrowthRate","DecayRate","DiskFull","ServiceDown","Planned_shutdown","etc.....etc","ServerOutage",
           "No Casue")

server <- shinyServer(function(input, output, session){
  # Function to get new observations
  get_new_data <- function(){

    new = sample(alarms,1)
#    data <- new %>% rbind %>% data.frame
    return(new)
  }

  # Initialize my_data
  my_data <<- get_new_data()

  # Function to update my_data
  update_data <- function(){
    my_data <<- c(get_new_data(), my_data)

  }

  output$plot <- renderPlotly({

    invalidateLater(1000, session)
    update_data()
#    print(my_data)
    dd = update_data()
    dd = as.data.frame(table(dd))
    print(dd)
    plot_ly(dd, x = ~dd, y = ~Freq)
  })

  # Plot the 30 most recent values
#  output$first_column <- renderPlot({
#    print("Render")
#    invalidateLater(1000, session)
#    update_data()
#    print(my_data)
#    plot(X1 ~ 1, data=my_data[1:30,], ylim=c(-3, 3), las=1, type="l")
#  })
})

shinyApp(ui=ui,server=server)

0 个答案:

没有答案