在力导向网络 networkD3::forceNetwork() 中为每个 link 指定颜色

Specify colors for each link in a force directed network, networkD3::forceNetwork()

问题是在R中使用networkD3::forceNetwork根据link的值或权重指定两种不同的颜色。例如Blue代表[=25的权重=]s大于1,dark为权重links小于1。

示例代码,复制自 hereforceNetwork 部分):

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一无所知)。

我认为您应该能够将包含在 JS 中的 javascript 函数传递给 linkColour 以根据 MisLinks 中的值获取颜色。例如,return 蓝色链接表示值 > 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" }'))

我在使用 networkD3 时遇到了同样的问题。
您可以通过使用 ifelse 函数根据 MisLinks$value 的值提供向量来做到这一点:

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
希望这有帮助。