d3.js在zoom上,如何使其不影响节点的大小?

d3.js在zoom上,如何使其不影响节点的大小?,d3.js,zooming,D3.js,Zooming,放大力图时,我希望忽略节点,因为我是链接和文本。我很难弄明白怎么做。(我使用不同的SVG形状,因此无法缩放“r”。)以下是我的节点代码: //node declared as global node = svg.selectAll(".node") .data(force.nodes()).enter().append("path") .attr("class", "node") .attr("d", d3.svg.symbol()

放大力图时,我希望忽略节点,因为我是链接和文本。我很难弄明白怎么做。(我使用不同的SVG形状,因此无法缩放“r”。)以下是我的节点代码:

    //node declared as global
    node = svg.selectAll(".node")
        .data(force.nodes()).enter().append("path")
        .attr("class", "node")
        .attr("d", d3.svg.symbol().type(function (d) { return d.Shape; }).size(150))
和缩放代码:

    function redraw(scale, trans) {
        //store the last event data
        trans = d3.event.translate;
        scale = d3.event.scale;

        text.style("font-size", (fontSize / scale) + "px");
        textEvidenceCtr.style("font-size", (fontSize / scale) + "px");
        $("line.link").css("stroke-width", getStrokeWidth); // Function so it runs for each element individually

        //transform the vis
        svg.attr("transform",
           "translate(" + trans + ")"
           + " scale(" + scale + ")"); }

谢谢

您的意思是要在缩放时保持节点尺寸不变吗?如果是这种情况,您只需要将它们设置为常量。你没有提到上面的节点,所以很难提供进一步的评论,除非我误解了这个问题。如果要完全忽略节点,可以将其样式设置为不透明度0。调整代码以显示节点的生成方式,您应该能够通过使用比例来定位元素,而不是应用变换来解决此问题。无论比例如何,是否希望节点保持相同的大小?在这种情况下,按比例因子,如“.attr(“d”,d3.svg.symbol().type(函数(d){return d.Shape;}).size(150/scale))”。这与Superboggly的建议基本相同,也是你们用来保持文本大小的建议。谢谢先生们,这正是我需要听到的。我的手离我的脸太近了。