为强制定向网络中的每个链接指定颜色,networkD3 :: forceNetwork()

Zhi*_*Jia 6 javascript r shiny networkd3

问题是根据networkD3::forceNetworkR中使用的链接的值或权重指定两种不同的颜色.例如,Blue对于链接的权重大于1,dark链接的权重小于1.

这里复制的示例代码(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)
Run Code Online (Sandbox Code Playgroud)

一D3-JS相关的问题是在这里(我什么都不知道JS到目前为止).

pic*_*ick 8

我认为您应该能够传递包含在其中的javascript函数,JSlinkColour根据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" }'))
Run Code Online (Sandbox Code Playgroud)


Jos*_*eah 6

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

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"))
Run Code Online (Sandbox Code Playgroud)

这个解决方案不依赖于知道javascript
希望这可以帮助。