链接的stroke-width
和节点的height
基于dy。我猜测初始dy值是在初始化时计算的,是data.links.value
的函数。
这是我对象的结构。
graph = {"nodes" : [], "links" : []};
data.links.forEach(function (d) {
graph.nodes.push({ "name": d.source});
graph.nodes.push({ "name": d.target});
graph.links.push({ "source": d.source,
"target": d.target,
"value": +d.value,
"unique": +d.unique,
"sameday": +d.sameday,
"sourceNpi": d.sourceNpi,
"targetNpi": d.targetNpi,
"sourceName": d.sourceName,
"targetName": d.targetName,
"npiname": d.npiname});
});
在某些用户事件中,我想切换使用value
来计算dy到sameday
或unique
。
在我的事件处理程序中,我正在做:
// set d.value to d.unique
graph.links.map(function(d){
d.value = +d.unique;
});
link.data(graph.links, function(d){
return d.sourceNpi + d.targetNpi;
})
.enter().append("path")
.attr("d", path);
sankey.relayout();
link
.transition()
.duration(750)
.attr("class", "link")
.style("stroke-width", function(d) {return d.dy; });
var rectTransition = d3.selectAll(".node > rect")
.data(graph.nodes, function(d){
return d.name;
})
.transition();
rectTransition
.attr("height", function(d) { return d.dy; })
.duration(750);
我希望使用dy
代替unique
重新计算value
,但它与重新计算前的值相同。当我致电.data()
时,数据是否未重新初始化?有没有办法重新计算dy
?