Ошибка в event_data ("plotly_hover")?(т сюжет, блестящий) - PullRequest
0 голосов
/ 25 марта 2019

В приложении Shiny я пытаюсь связать несколько сюжетов.Для этого мне нужно иметь возможность получать данные при наведении на что-то вроде 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 голосов
/ 26 марта 2019

Я думаю, это потому, что renderText не знает, как обращаться с dataframe, поскольку название предполагает, что он отображает текст, ничто иное, не соответствующее квалификации "string", вероятно, не будет работать. Упаковка в 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) 
0 голосов
/ 25 марта 2019

Хорошо - я нашел решение ... довольно глупо, но использование renderPrint() вместо renderText() работает без проблем.Упс!Благодарю.

...