我正在尝试创建一个显示两个图的仪表板:
条形图和时间序列图。
时间序列图具有一个滑块,我希望条形图仅显示滑块范围内的值。
我可以使用闪亮的滑块小部件,但我希望使用一个附加到时间序列图上的小部件。
答案 0 :(得分:0)
这就是我想你所追求的:
library(shiny)
library(plotly)
library(data.table)
nPoints <- 100
DT <- data.table(x = Sys.time()-seq_len(nPoints), y = runif(nPoints, 0, 10))
ui <- fluidPage(
plotlyOutput("scatterPlot"),
plotlyOutput("barPlot")
)
server <- function(input, output, session) {
output$scatterPlot <- renderPlotly({
p_scatter <- plot_ly(
DT,
x = ~ x,
y = ~ y,
type = "scatter",
mode = "lines"
) %>%
layout(
xaxis = list(
rangeslider = list(type = "date")
))
})
xRangeRaw <- reactiveVal()
xRange <- xRangeRaw %>% debounce(100)
observeEvent(event_data("plotly_relayout"), {
xRangeRaw(event_data("plotly_relayout")$xaxis.range)
})
output$barPlot <- renderPlotly({
if(is.null(xRange())){
filteredDT <- DT
} else {
filteredDT <- DT[x %between% as.POSIXct(xRange(), format = "%Y-%m-%d %H:%M:%OS")]
}
p_bar <- plot_ly(
na.omit(filteredDT),
x = ~ x,
y = ~ y,
type = "bar"
)
})
}
shinyApp(ui = ui, server = server)