【问题标题】:Plotly and Shiny Dashboard- use daterangeinput to change range on date axis in a plotly graphPlotly 和 Shiny Dashboard - 使用 daterangeinput 在绘图图中更改日期轴上的范围
【发布时间】:2017-05-14 01:20:12
【问题描述】:

我在 R 中制作了一个带有线条和散点以及填充区域变量的 Plotly 图。 X 轴是格式为 as.POSIXCT 的日期和时间,格式为 = "%Y-%m-%d %H:%M:%S"。每 10 分钟有 2 个月的数据。 Y 轴是单位数。

我正在将图表集成到闪亮的仪表板中。我想使用 daterangeInput 来选择 X 轴的日期范围。不过,我不知道如何将 daterangeInput 集成为反应式/交互式。

任何帮助将不胜感激!

Plotly 图,合并:

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"))) 

用户界面:

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:")
                )),

服务器:

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

【问题讨论】:

    标签: r shiny plotly dashboard interactive


    【解决方案1】:

    在您的 server 函数中,您必须创建一个响应式,以在每次更改 DateRange 时过滤数据集。你称之为反应式来绘制你的情节:

    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"))) 
            })
    }
    

    【讨论】:

    • 谢谢!这让我更接近,但我收到一个错误,上面写着: eval 中的警告(替代(expr),envir,enclos):不兼容的方法(“Ops.POSIXt”,“Ops.Date”)for ">=" 我认为这与 posixt 格式有关,但我尝试重新格式化但没有任何运气。
    • 你可以试试filter(as.Date(date)&gt;=input$inDateRange[1] &amp; as.Date(date)&lt;input$inDateRange[2])
    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 2016-02-26
    • 2020-12-02
    • 2020-12-23
    相关资源
    最近更新 更多