簡體   English   中英

如何在 R Shiny 中顯示來自 plotly_click 的許多點?

[英]How to display many points from plotly_click in R Shiny?

我在 R Shiny 中有一個情節。 我希望能夠單擊許多點並將它們顯示在表格中。 該圖運行良好,我可以獲得 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默認值) - 消除警告:

未指定跟蹤類型:根據提供的信息,“分散”跟蹤似乎是合適的。

  • 修復了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)

圖像:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM