为力导向网络networkD3::forceNetwork()中的每个链接指定颜色



问题是使用R中的networkD3::forceNetwork根据链接的值或权重指定两种不同的颜色。例如,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)

这里有一个与d3-js相关的问题(到目前为止,我对js一无所知)。

我认为您应该能够将封装在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" }'))

我刚刚在使用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"))

该解决方案不依赖于知道CCD_ 10
希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新