【问题标题】:Error in event_data("plotly_hover")? ( r plotly, shiny)event_data(“plotly_hover”)中的错误? ( r 情节,闪亮)
【发布时间】:2019-08-15 22:39:51
【问题描述】:

在一个闪亮的应用程序中,我试图链接多个情节。为此,我需要能够使用event_data("plotly_hover") 之类的内容检索悬停数据。虽然这以前对我有用,但今天由于某种原因我遇到了一个我无法解决的问题。当我将鼠标悬停在任何绘图对象上并显示悬停事件数据时,Shiny 应用程序中会返回此错误:

Warning: Error in cat: argument 1 (type 'list') cannot be handled by 'cat'

过去,在情节对象上使用event_data(...) 对我来说效果很好,所以我对可能发生的事情摸不着头脑。下面是一些独立的示例代码:

ui <- fluidPage(
  plotlyOutput("singlePlot"),
  verbatimTextOutput("hoverData")
)

server <- function(input, output, session) {
  output$singlePlot <- renderPlotly({
    p <- plot_ly(x = 1:10, y = 1:10, color = I("red"), marker = list(color = "blue"))
    p
  })

  output$hoverData <- renderText(event_data("plotly_hover"))
}


shinyApp(ui = ui, server = server) 

理论上我应该看到这样的东西:

      curveNumber  pointNumber      x      y 
1               0            1      1      4

但我留下了上面的错误。对可能发生的事情有任何想法吗?

【问题讨论】:

    标签: r ggplot2 shiny plotly


    【解决方案1】:

    我认为这是因为renderText 不知道如何处理dataframe,顾名思义,它会呈现文本,其他不符合“字符串”限定的方法可能都不起作用。将其包装在 as.character 中也可以解决您的问题。 renderText( as.character(event_data("plotly_hover")))

    ui <- fluidPage(
      plotlyOutput("singlePlot"),
      verbatimTextOutput("hoverData")
    )
    
    server <- function(input, output, session) {
      output$singlePlot <- renderPlotly({
        p <- plot_ly(x = 1:10, y = 1:10, color = I("red"), marker = list(color = "blue"))
        p
      })
    
      output$hoverData <- renderText( as.character(event_data("plotly_hover")))
    }
    
    
    shinyApp(ui = ui, server = server) 
    

    【讨论】:

    • 我发现renderPrint() 工作得很好,但我不太清楚为什么。谢谢你的解释!
    • 不客气,renderPrint 是更好的方法,是的。享受闪亮的体验! (我猜你对它比较陌生?)
    • 完全正确——我还在掌握它。谢谢!
    【解决方案2】:

    好的——我找到了解决方案……有点傻,但是使用renderPrint() 而不是renderText() 可以无缝工作。哎呀!谢谢。

    【讨论】:

      猜你喜欢
      • 2017-08-12
      • 2018-04-03
      • 2014-09-12
      • 2016-03-25
      • 1970-01-01
      • 2021-01-09
      • 2015-12-02
      • 1970-01-01
      相关资源
      最近更新 更多