2016-12-29 4 views
2

J'ai créé un graphe de Plotly dans R avec des lignes et des scatters et des variables de surfaces pleines. L'axe des X est les dates et les heures formatés en .POSIXCT avec le format = "% Y-% m-% d% H:% M:% S". Il y a 2 mois de données par intervalles de 10 minutes. L'axe Y est le nombre d'unités. Je suis en train d'intégrer le graphique dans un tableau de bord brillant.Dashboard Plotly et Shiny - utiliser daterangeinput pour modifier la plage sur l'axe des quantièmes dans un graphe de tracé

Je voudrais utiliser le paramètre daterangeInput pour choisir la plage de dates pour l'axe X. Cependant, je n'arrive pas à comprendre comment intégrer le daterangeInput pour être réactif/interactif.

Toute aide serait appréciée!

Le graphique Plotly, consolidé:

graph <- plot_ly(master, x = date, y = arrival.one, name = 'One Arrival', visible = "legendonly") %>% 
add_trace(x= date, y = arrival.two, name = 'Two Arrival', mode = 'lines', visible = "legendonly") %>% 
layout(xaxis = list(title= "Date and Time", 
     rangeslider = list (type = "date"))) 

L'interface utilisateur:

ui <- dashboardPage(skin="black", 
       dashboardHeader(title = "Rack Filling"), 
       dashboardSidebar(sidebarMenu(
        menuItem("Dashboard", tabName = "dashboard", icon =  icon("line-chart")), 
        menuItem("Staffing", tabName = "staffing", icon = icon("male")), 
        dateRangeInput("inDateRange", "Date range input:") 
       )), 

Serveur:

server <- function(input, output) { 
output$graph <- renderPlotly({graph    
}) 
output$event <- renderPrint({ 
?????????? 

Répondre

1

En Dans votre fonction server, vous devez créer un réactif qui filtre l'ensemble de données chaque fois que le paramètre DateRange est modifié. Vous appelez cela réactif pour dessiner votre intrigue:

server <- function(input, output) { 
    reactiveMaster <- reactive({ 
     master %>% filter(date>=input$inDateRange[1] & date<input$inDateRange[2]) 
     }) 

    output$graph <- renderPlotly({ 
     plot_ly(reactiveMaster(), x = date, y = arrival.one, name = 'One Arrival', visible = "legendonly") %>% 
      add_trace(x= date, y = arrival.two, name = 'Two Arrival', mode = 'lines', visible = "legendonly") %>% 
      layout(xaxis = list(title= "Date and Time", 
        rangeslider = list (type = "date"))) 
     }) 
} 
+0

Merci! Cela me rapproche beaucoup plus, mais j'ai une erreur qui dit: Avertissement dans eval (substitut (expr), envir, enclos): Méthodes incompatibles ("Ops.POSIXt", "Ops.Date") pour "> =" I pense que cela a à voir avec le formatage posixt, mais j'ai essayé de reformater et n'ai pas eu de chance. – grapher

+0

Vous pouvez essayer 'filter (as.Date (date)> = entrée $ inDateRange [1] & as.Date (date) HubertL