# \donttest{
data(noise_fluct)
# example 1 : Easy method using shiny_hugeplot
shiny_hugeplot(noise_fluct$time, noise_fluct$f500)
# example 2 : Manual method using a downsampler object
fig <- plot_ly(
x = noise_fluct$time,
y = noise_fluct$f500,
type = "scatter",
mode = "lines"
) %>%
layout(xaxis = list(type = "date")) %>%
shinyHugePlot::plotly_build_light()
ds <- downsampler$new(
figure = fig,
aggregator = min_max_aggregator$new(interleave_gaps = TRUE)
)
ui <- fluidPage(
plotlyOutput(outputId = "hp", width = "800px", height = "600px")
)
server <- function(input, output, session) {
output$hp <- renderPlotly(ds$figure)
observeEvent(plotly::event_data("plotly_relayout"),{
updatePlotlyH(session, "hp", plotly::event_data("plotly_relayout"), ds)
})
}
shinyApp(ui = ui, server = server)
# example 3 : Add another series of which aggregator is different
noise_events <- tibble(
time = c("2022-11-09 12:25:50", "2022-11-09 12:26:14"),
level = c(60, 60)
)
ds$add_trace(
x = noise_events$time, y = noise_events$level, name = "event",
type = "scatter", mode = "markers",
aggregator = null_aggregator$new()
)
ds$update_trace(reset = TRUE)
server <- function(input, output, session) {
output$hp <- renderPlotly(ds$figure)
observeEvent(plotly::event_data("plotly_relayout"),{
updatePlotlyH(session, "hp", plotly::event_data("plotly_relayout"), ds)
})
}
shinyApp(ui = ui, server = server)
# }
Run the code above in your browser using DataLab