r - 如何在 R Shiny 中显示来自 plotly_click 的许多点?

标签 r shiny plotly

我在 R Shiny 中有一个 plotly 。我希望能够单击多个点并将它们显示在表格中。该图运行良好,我可以获得 1 plotly_click(通过 event_data())显示在表格中。如何增长许多 event_data 点的向量。这是一些示例代码。我试图将事件保存在 d_save 中。谢谢。

library(shiny)
library(plotly)

data1 <- data.frame(cbind(seq(1,1000,1),seq(1,1000,1)*5))
colnames(data1) <- c('index','data')
data_points <- data.frame(cbind(seq(1,1000,5),seq(1,1000,5)*5))
colnames(data_points) <- c('index','data')


ui <- fluidPage(
  plotlyOutput("plot1"),
  tableOutput("dataTable")
)

d_save <- vector()

server <- function(input, output, session) {

  # make plotly plot
  output$plot1 <- renderPlotly({
    p <- plot_ly(data1, x = data1$index, y = data1$data,mode = "lines")
    add_trace(p, x = data_points$index, y = data_points$data, mode = "markers")
  })

    # show table of stances 
    output$dataTable <- renderTable({
      d <- event_data("plotly_click")
      d_save <- c(d_save,d$pointNumber[2]+1)
      data.frame(d_save)
    })
}

shinyApp(ui, server)

最佳答案

这并没有什么严重的问题,奇怪的是它从未得到答复。这不是纯 plotly(不使用 ggplot)的一个坏例子。

我通过以下方法修复了它:

  • 更改 d_save <- c(...)分配给 d_save <<- c(...) (在这里使用 reactiveValues 会更干净)。
  • 将 plotly 调用更改为管道,这似乎允许保留某些设置(例如 type=scatter 默认值)- 消除警告:

No trace type specified: Based on info supplied, a 'scatter' trace seems appropriate.

  • 修复了 d_save 中的“逐一”索引错误作业。
  • 添加了 layout(...)给它一个标题(这对很多事情都很有用)。

结果代码:

library(shiny)
library(plotly)

data1 <- data.frame(cbind(seq(1,1000,1),seq(1,1000,1)*5))
colnames(data1) <- c('index','data')
data_points <- data.frame(cbind(seq(1,1000,5),seq(1,1000,5)*5))
colnames(data_points) <- c('index','data')

ui <- fluidPage(
  plotlyOutput("plot1"),
  tableOutput("dataTable")
)

d_save <- vector()

server <- function(input, output, session) {

  # make plotly plot
  output$plot1 <- renderPlotly({
    plot_ly(data1, x=data1$index, y=data1$data,mode = "lines") %>%
         add_trace(x = data_points$index, y=data_points$data, mode = "markers") %>%
         layout(title="Plotly_click Test")
  })

  # show table of point markers clicked on by number
  output$dataTable <- renderTable({
    d <- event_data("plotly_click")
    d_save <<- c(d_save,d$pointNumber[1]+1)
    data.frame(d_save)
  })
}
shinyApp(ui, server)

图片:

enter image description here

关于r - 如何在 R Shiny 中显示来自 plotly_click 的许多点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38616790/

相关文章:

r - 展平深度嵌套且格式错误的 JSON 文件

r - 我想 grep/gsub 空,空格和连字符,并将其替换为 R 中的 NA

R 函数将数字 (23) 转换为英文 ("twenty-three")

r - knitr、RGL 和 legend3d : legend3d didn't show up in the html generated by knitr

r - 防止 Shiny 的应用程序破坏 while 循环

r - 绘图动画 map 不显示具有 NA 值的国家

r - 如何减少 selectinput 中标签和选项之间的空间?

r - 如何获取 R Shiny 中所有输出元素的列表

python - 如何从图中删除 plotly logo ("Produced with plotly")

python - dashplotly - 动态创建下拉菜单,选择多行,表格导出?