Я пытаюсь создать R блестящую панель инструментов с заговором Санки. Я хочу иметь возможность извлечь имя щелкнутого узла.R Shiny - sankey plot with click events
Существует 2 библиотеки, которые могут отображать диаграммы Санки,и googleVis
. networkD3
позволяет отслеживать события кликов, хотя другой тип сюжета, реализованный в той же библиотеке, поставляется с такой функцией (forceNetwork()
).
googleVis
пакет однако имеет функцию gvisSankey
, которая может создавать участки sankey, и в качестве опции вы можете передать параметр gvis.listener.jscode
, который должен быть способен его захватить.
Боюсь, я не знаком с JS, и я изо всех сил пытаюсь получить то, что я ищу. Это насколько мне удалось получить:
library(shiny)
library(googleVis)
datSK <- data.frame(From=c(rep("A",3), rep("B", 3)),
To=c(rep(c("X", "Y", "Z"),2)),
Weight=c(5,7,6,2,9,4))
SERVER <- function(input, output, session){
sankey_click <- sprintf("var text = chart.getSelection();
Shiny.onInputChange('%s', text.toString())", session$ns('text'))
output$sankey <- renderGvis(
gvisSankey(datSK, from="From", to="To", weight="Weight",
options=list(gvis.listener.jscode = sankey_click,
sankey = "{node: {interactivity: true, width: 50}}"))
)
click_event <- reactive({input$text})
output$click <- renderText(click_event())
}
UI <- fluidPage(
fluidRow(column(12, htmlOutput("sankey"))),
fluidRow(column(12, verbatimTextOutput("click")))
)
shinyApp(ui = UI, server = SERVER)
Как вы можете видеть, все это я получаю object Object
.
Большое спасибо заранее!
Я бы дал вам 100 голосов за этот ответ, если бы мог, спасибо! Вы не просто дали мне ответ, вы показали мне, как разрешать подобные проблемы в будущем. – IVR