问题是使用R中的networkD3::forceNetwork
根据链接的值或权重指定两种不同的颜色。例如,Blue
表示链接权重大于1 dark
}对于小于1的链接权重。
从here(forceNetwork
部分)复制的示例代码:
library(networkD3)
# Load data
data(MisLinks)
data(MisNodes)
# Plot
forceNetwork(Links = MisLinks, Nodes = MisNodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
Group = "group", opacity = 0.8)
与d3-js相关的问题是here(到目前为止我对JS一无所知)。
答案 0 :(得分:8)
我认为您应该能够将JS
中包含的javascript函数传递给linkColour
,以根据MisLinks中的值获取颜色。例如,返回值为>的蓝色链接; 1为红色,值为< = 1。
forceNetwork(Links = MisLinks, Nodes = MisNodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
Group = "group", opacity = 0.8,
linkColour = JS('function(l) { return l.value > 1 ? "#00F" : "#F00" }'))
答案 1 :(得分:3)
我使用networkD3
时遇到了同样的问题
您可以通过使用MisLinks$value
函数提供取决于ifelse
值的向量来实现此目的:
forceNetwork(Links = MisLinks, Nodes = MisNodes,
Source = "source", Target = "target",
Value = "value", NodeID = "name",
Group = "group", opacity = 0.8,
linkColour = ifelse(MisLinks$value > 1, "blue","black"))
此解决方案不依赖于了解javascript
希望这会有所帮助。