在力图带标记D3鱼眼镜头(D3 fisheye on a force graph with mark

2019-10-16 16:04发布

我喜欢(http://bost.ocks.org/mike/fisheye/)新鱼眼插头,但要得到它的工作对使用路径和标记,而不是线图力。 我是新来D3,到目前为止结合的标记演示,与鱼眼演示先后击败了我,我想知道是否有人已经成功,可以点我在正确的方向。

干杯本

Answer 1:

vis.on( “鼠标移动”,函数(){如果(rmbMenuHidden){fisheye.center(d3.mouse(本));

        node
            .each(function(d) { d.display = fisheye(d); })
            .attr("cx", function(d) { return d.display.x; })
            .attr("cy", function(d) { return d.display.y; })
            .attr("r", function(d) {  d.display.r=d.display.z * 10; return d.display.r;});

        path.attr("d", function(d) {

            var dx = d.t.display.x - d.s.display.x;
            var dy = d.t.display.y - d.s.display.y;

            var h= Math.sqrt(dx * dx + dy * dy);
            var htr = h-d.t.display.r-d.edgeWidth-1;
            var cos=dx/h;
            var sin=dy/h;

            var dxt = cos*htr+d.s.display.x;
            var dyt = sin*htr+d.s.display.y;

            //clip source to circle radius too
            var dxs = cos*d.s.display.r+d.s.display.x;
            var dys = sin*d.s.display.r+d.s.display.y;

                var dx = d.t.display.x - d.s.display.x,
                dy = d.t.display.y - d.s.display.y;
                dr = Math.sqrt(dx * dx + dy * dy);
                return "M" + d.s.display.x + "," + d.s.display.y + "A" + dr + "," + dr + " 0 0,1 " + dxt + "," + dyt;
        });
    }
}


文章来源: D3 fisheye on a force graph with markers