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

时间:2015-12-27 13:22:46

标签: javascript r shiny networkd3

问题是使用R中的networkD3::forceNetwork根据链接的值或权重指定两种不同的颜色。例如,Blue表示链接权重大于1 dark }对于小于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一无所知)。

2 个答案:

答案 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 希望这会有所帮助。