我试图了解如何根据节点的值使用渐变。我已经想出了如何基于任意颜色进行渐变,例如“粉红色”->“黄色”,但我试图弄清楚如何让对角线渐变从基于源节点和目标节点的值开始。我的项目基于 mike bostock 的“可折叠树”: http ://bl.ocks.org/mbostock/4339083
这是相关的代码。我一直在寻找高低试图弄清楚如何做到这一点。
我的节点有一个值“.epoch”,它介于 min_epoch 和 max_epoch 之间,并根据以下代码着色:
function epochColor(d) {
var blueRed = d3.scale.linear()
.domain([min_epoch, max_epoch])
.range(["blue", "red"]);
return blueRed(d);
}
function myEpochColor(d) {
return (epochColor(d.epoch));
}
我已经尝试了任意数量的变体来获得从目标值到源值的梯度,但没有运气。我认为问题在于,当评估梯度代码时,它对节点一无所知。我试着放入一个 .call(function)... 没有爱。
.link {
fill: none;
stroke-width: 3px;
opacity: 1.00;
stroke: url(#myEpochGradient);
}
...
var gradient = svg.append("svg:defs")
.append("svg:linearGradient")
.attr("id", "myEpochGradient")
.attr("gradientUnits", "objectBoundingBox")
.attr("x1", "0%").attr("y1", "0%")
.attr("x2", "100%").attr("y2", "0%");
gradient.append("svg:stop")
.attr("offset", "0%")
.attr("stop-opacity", 1)
.attr("stop-color", function(d) {return myEpochColor(d.source)});
gradient.append("svg:stop")
.attr("offset", "100%")
.attr("stop-opacity", 1)
.attr("stop-color", function(d) {return myEpochColor(d.target)});
任何帮助弄清楚这一点将不胜感激。
蒂亚-基思