Cod*_*oob 4 javascript networking r networkd3 htmlwidgets
我有这个代码:
library(networkD3)
# Load data
data(MisLinks)
data(MisNodes)
new.nodes <- MisNodes
new.nodes$var1 <- runif(nrow(MisNodes),1,2)
new.nodes$var2 <- runif(nrow(MisNodes),1,2)
# Some script to show the node index in the new.nodes data frame
script <- 'alert("row: " + (d.index + 1));'
# Plot
forceNetwork(Links = MisLinks, Nodes = new.nodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
Group = "group", opacity = 0.8,
clickAction = script)
Run Code Online (Sandbox Code Playgroud)
我想通了通过询问来获取节点数据帧的行号d.index + 1。但是我想显示一个包含所有节点信息的表,如下所示(也许格式更好):
name group size var1 var2
1 Myriel 1 15 1.501311 1.053062
Run Code Online (Sandbox Code Playgroud)
这需要 JavaScript 能够访问节点数据帧,因为我对 JavaScript 的了解很少,所以我无法弄清楚如何请求这些数据。
发生这种情况的原因是该forceNetwork函数删除了传递给 JavaScript 的数据框中所有不必要的变量/列,这通常是有利的,但在本例中并非如此。您可以通过保存创建的 htmlwidget 对象来解决这个问题forceNetwork,然后添加回您需要访问的变量,然后“打印”/显示它。
library(networkD3)
data(MisLinks)
data(MisNodes)
MisNodes$var1 <- runif(nrow(MisNodes),1,2)
script <- 'alert("var1: " + (d.var1));'
fn <- forceNetwork(Links = MisLinks, Nodes = new.nodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
Group = "group", opacity = 0.8, clickAction = script)
fn$x$nodes$var1 <- MisNodes$var1
fn
Run Code Online (Sandbox Code Playgroud)
这也可以使用多个变量来完成,例如......
library(networkD3)
data(MisLinks)
data(MisNodes)
MisNodes$var1 <- runif(nrow(MisNodes),1,2)
MisNodes$var2 <- runif(nrow(MisNodes),1,2)
script <- 'alert("var1: " + d.var1 + "\\n" + "var2: " + d.var2);'
fn <- forceNetwork(Links = MisLinks, Nodes = new.nodes, Source = "source",
Target = "target", Value = "value", NodeID = "name",
Group = "group", opacity = 0.8, clickAction = script)
fn$x$nodes$var1 <- MisNodes$var1
fn$x$nodes$var2 <- MisNodes$var2
fn
Run Code Online (Sandbox Code Playgroud)