【发布时间】:2015-05-25 21:55:40
【问题描述】:
我正在尝试使用 networkD3 包在 R 中创建一个力导向网络图。一切正常...
devtools::install_github('christophergandrud/networkD3')
library(networkD3)
links2 <- data.frame(
Source = c(0, 0, 0, 1, 2, 3),
Target = c(1, 4, 5, 3, 4, 5),
Value = c(1, 9.9, 10, 8.8, 6.6, 7.2))
nodes2 <- data.frame(ID = 0:5,
Group = c(1L, 1L, 1L, 2L, 1L, 2L))
# this works
forceNetwork(Links=links2, Nodes=nodes2,
Source="Source", Target="Target", Value="Value",
NodeID="ID", Group="Group")
... 直到我开始使用 linkDistance 参数。当我将它设置为我想要的,Value 的一个函数时,我得到一个网络图,它由设备左上角的单个节点组成。
# this doesn't work
forceNetwork(Links=links2, Nodes=nodes2,
Source="Source", Target="Target", Value="Value",
NodeID="ID", Group="Group",
linkDistance="function(d) { return d.value; }")
如果有任何关于如何改变链接长度的建议,我将不胜感激。
我在 R Studio 版本 0.98.1103 中使用适用于 Windows 的 R 版本 3.1.3,包 networkD3 版本为 0.1.2.2。 (我最初使用 CRAN 的 networkD3 版本 0.1.2.1 遇到问题。所以我从 GitHub 安装了最新版本,并且遇到了同样的问题。)
【问题讨论】:
-
我将此问题提交给 networkD3,github.com/christophergandrud/networkD3/issues/37。我从@jjallaire那里收到了一个有效的答案!先附加
library(htmlwidgets),然后在linkDistance参数中使用JS函数:forceNetwork(Links=links2, Nodes=nodes2, Source="Source", Target="Target", Value="Value", NodeID="ID", Group="Group", linkDistance=JS('function(d) {', 'return d.value;', '}'))