作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 R/Shiny 应用程序中有一个 networkd3 Sankey 图,它从 MySQL 连接中提取数据。我正在尝试找到一种“向下钻取”图表的方法-单击一个节点,这将返回该节点的名称。然后,我将使用它向数据库传递另一个查询,该数据库将在应用程序中填充一个表。
这就是我所拥有的 -
san <- sankeyNetwork(Links = sanData, Nodes = nodes, Source = "source",
Target = "target", Value = "value")
htmlwidgets
,并在我的 sankey 图表上使用 onRender 运行以下 JS 脚本。
clickFun <- 'd3.selectAll(".link").on("click",function(d) {alert(d.value);})'
onRender(san, clickFun)
".node"
和
d.data.name
正如其他一些示例所建议的那样,但我无法让它工作并且没有弹出警报。
alert()
位到
return()
,但我不知道如何在我的服务器应用程序中使用它。
最佳答案
您的 click 事件在链接上起作用但在节点上不起作用的原因是因为节点还具有附加到它们的拖动行为。解决这个问题的最简单方法是取消拖动行为,然后添加点击行为,就像这样......
library(networkD3)
library(htmlwidgets)
URL <- paste0('https://cdn.rawgit.com/christophergandrud/networkD3/',
'master/JSONdata/energy.json')
energy <- jsonlite::fromJSON(URL)
san <-
sankeyNetwork(Links = energy$links, Nodes = energy$nodes, Source = 'source',
Target = 'target', Value = 'value', NodeID = 'name',
units = 'TWh', fontSize = 12, nodeWidth = 30)
clickFun <-
'function() {
d3.selectAll(".node").on("mousedown.drag", null);
d3.selectAll(".node").on("click",function(d) { alert(d.name); })
}'
onRender(san, clickFun)
library(shiny)
library(networkD3)
library(DT)
library(sqldf)
library(htmlwidgets)
URL <- paste0('https://cdn.rawgit.com/christophergandrud/networkD3/',
'master/JSONdata/energy.json')
energy <- jsonlite::fromJSON(URL)
energy$links$name <- energy$nodes$name[energy$links$source + 1]
df <- energy$links
funct <-
function (n) {
isp <- sprintf("Select * From df Where df.name='%s';", n)
isd <- sqldf::sqldf(isp)
return(isd)
}
ui <- shinyUI(fluidPage(
fluidRow(
column(4, sankeyNetworkOutput("sankey")),
column(4, DT::dataTableOutput("table"))
)
))
server <- shinyServer(function(input, output, session) {
session$onSessionEnded(stopApp)
output$sankey <- renderSankeyNetwork({
san <-
sankeyNetwork(Links = energy$links, Nodes = energy$nodes, Source = 'source',
Target = 'target', Value = 'value', NodeID = 'name',
units = 'TWh', fontSize = 12, nodeWidth = 30)
clickFun <-
'function() {
d3.selectAll(".node").on("mousedown.drag", null);
d3.selectAll(".node").on("click",function(d) { Shiny.onInputChange("id", d.name); });
}'
onRender(san, clickFun)
})
output$table <- DT::renderDataTable(DT::datatable(funct(input$id)))
})
shinyApp(ui = ui, server = server)
关于javascript - 在 Networkd3 Sankey Chart (R/Shiny) 中返回节点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48454297/
我有一个 eth0.link 文件来更改接口(interface) eth0 的 MAC 地址。我想在不重新启动的情况下应用此更改。我试过了 systemctl daemon-reload syste
我是一名优秀的程序员,十分优秀!