Skip to content

Commit e99f97e

Browse files
committed
add shiny example of dragging lines
1 parent eb12338 commit e99f97e

File tree

1 file changed

+46
-0
lines changed
  • inst/examples/shiny/drag_lines

1 file changed

+46
-0
lines changed

inst/examples/shiny/drag_lines/app.R

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
library(shiny)
2+
library(plotly)
3+
4+
ui <- fluidPage(
5+
plotlyOutput("p"),
6+
verbatimTextOutput("event")
7+
)
8+
9+
x <- seq(-10, 10)
10+
y <- rnorm(length(x))
11+
12+
13+
server <- function(input, output, session) {
14+
15+
output$p <- renderPlotly({
16+
17+
d <- event_data("plotly_relayout", source = "trajectory")
18+
19+
selected_point <- if (!is.null(d[["shapes[0].x0"]])) {
20+
xint <- d[["shapes[0].x0"]]
21+
xpt <- x[which.min(abs(x - xint))]
22+
list(x = xpt, y = y[which(x == xpt)])
23+
} else {
24+
list(x = 1, y = y[which(x == 1)])
25+
}
26+
27+
plot_ly(color = I("red"), source = "trajectory") %>%
28+
add_lines(x = x, y = y) %>%
29+
add_markers(x = selected_point$x, y = selected_point$y) %>%
30+
layout(
31+
shapes = list(
32+
type = "line",
33+
line = list(color = "gray", dash = "dot"),
34+
x0 = selected_point$x,
35+
x1 = selected_point$x,
36+
y0 = 0,
37+
y1 = 1,
38+
yref = "paper"
39+
)
40+
) %>%
41+
config(editable = TRUE)
42+
})
43+
44+
}
45+
46+
shinyApp(ui, server)

0 commit comments

Comments
 (0)