在“闪亮”应用程序中,我正在尝试链接多个图。为此,我需要能够使用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
但是我留下了上面的错误。对可能发生的事情有任何想法吗?
答案 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!
}