问题是使用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
希望这能有所帮助。