4
다음과 같이 shiny, plotly 및 shinyBS를 사용하여 플롯에서 plotly_click 이벤트가 발생하면 새 플롯과 함께 모달 팝업을 생성합니다. 로컬에서 실행할 때나 로컬 브라우저에서도 완벽하게 작동합니다.Shiny Plotly event_data 반짝이는 서버에서만 오류가 발생했습니다.
그러나 Shiny 서버에 배포하면이 오류가 발생하고 이것이 의미하는 바가 전혀 없습니다. 이견있는 사람?
library(shiny)
library(plotly)
library(shinyBS)
df1 <- data.frame(x = 1:10, y = 1:10)
df2 <- data.frame(x = c(rep('a', 10), rep('b', 10)),
y = c(rnorm(10), rnorm(10, 3, 1)))
ui <- fluidPage(
column(6, plotlyOutput('scatter')),
bsModal('boxPopUp', '', '', plotlyOutput('box'))
)
server <- function(input, output, session) {
output$scatter <- renderPlotly({
plot_ly(df1, x = ~x, y = ~y, mode = 'markers',
type = 'scatter', source = 'scatter')
})
observeEvent(event_data("plotly_click", source = "scatter"), {
toggleModal(session, "boxPopUp", toggle = "toggle")
})
output$box <- renderPlotly({
eventdata <- event_data('plotly_click', source = 'scatter')
validate(need(!is.null(eventdata),
'Hover over the scatter plot to populate this boxplot'))
plot_ly(df2, x = ~x, y = ~y, type = 'box')
})
}
shinyApp(ui = ui, server = server)
오류 메시지 (응용 프로그램에 대한 반짝 서버 로그에 표시)은 다음과 같다 :
Warning: Error in event_data: attempt to apply non-function
Stack trace (innermost first):
59: event_data
58: observeEventExpr
1: runApp
아주 재미 있고 아주 이상한 :
이
는 코드입니다. 샤이니가 모달 기능을 내장하고 있다는 것을 나는 몰랐다. 잘 알고 있고 지적 해 주셔서 감사합니다. Shiny를 0.14 버전으로 업그레이드하면 원래 코드도 제대로 작동합니다. 그래서, 그것은 반짝 이는의 dev 버전에 문제가 있어야합니다. 나는 0.13.xyz를 사용하고 있었다 .... 나는 내 머리를 꽤 많이 쳤다. 그리고 당신의 대답은 도왔다. 샤이니에서 내장 된 모달을 사용하는 것이 더 깨끗해 보일지라도 내 코드는 괜찮습니다. – Gopala동일한 마커를 두 번 연속 클릭하면 모달이 다시 열리지 않습니다 (event_data가 변경되지 않았기 때문에). 나는 어떤 해결책을 찾기 위해 머리를 치고있다? – shosaco