D3.JS中的Sankey图采用节点和链接的数据集进行绘图(参见VividD在http://jsfiddle.net/mF27g/处的小提琴示例)。数据集看起来像:
{
"nodes": [{"node": 0, "name": "node0"},
{"node": 1, "name": "node1"},
{"node": 2, "name": "node2"},
{"node": 3, "name": "node3"},
{"node": 4, "name": "node4"},
{"node": 5, "name": "node5"}]...,
"links": [{"source": 0, "target": 2, "value": 25},
{"source": 1, "target": 2, "value": 5},
{"source": 1, "target": 3, "value": 20},
{"source": 2, "target": 4, "value": 29},
{"source": 2, "target": 5, "value": 1},
{"source": 3, "target": 4, "value": 10},
{"source": 3, "target": 5, "value": 2}...]
}
在我的情况下,我有一个稍微不同的数据集来表示。区别在于"链接"设置,而不是一个"值",我有两个如:
"links": [{"source": 0, "target": 2, "value1": 15, "value2": 10},
{"source": 1, "target": 2, "value1": 2, "value2": 3},
{"source": 1, "target": 3, "value1": 10, "value2": 10},
{"source": 2, "target": 4, "value1": 20, "value2": 9},...
我的问题是:我如何将每个链接分成两部分?理想情况下,我想用不同的颜色为每个部分着色。总共有两种颜色,一种用于value1,另一种用于value2。
有什么想法吗?
答案 0 :(得分:0)
我不确定您要求的是可能的,但首先您可以使用不同的JSON字段在工具提示中添加第二个值。
这里:
{
"source": 2,
"target": 5,
"value": 1,
"value2": 10
}
等
link.append("title")
.text(function(d) {
return d.source.name + " → " + d.target.name + "\n" +
format(d.value) + "\n value 2: " +
format(d.value2);
});