event_data(“ plotly_hover”)错误? (很明显,有光泽)

时间:2019-03-25 16:10:51

标签: r ggplot2 shiny plotly

在“闪亮”应用程序中,我正在尝试链接多个图。为此,我需要能够使用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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我认为这是因为renderText不知道如何处理dataframe,顾名思义,它renderText( as.character(event_data("plotly_hover")))会呈现文本,不符合“字符串”条件的其他任何东西都可能不起作用。将其包装为as.character也可以解决您的问题。 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)

let usedURLString = "my http link"
if let url = URL(string: usedURLString) {
    do {
        let contents = try String(contentsOfURL: myURL, encoding: NSUTF8StringEncoding)
        print(contents)
    } catch {
        // contents could not be loaded
    }
} else {
    // the URL was bad!
}