用正确的数字创建一条路径

时间:2015-08-10 16:31:28

标签: javascript d3.js

这应该有一个非常直接和明显的答案,但我的研究并没有给我带来一个。这是个问题。这是我的道路:

svg.selectAll(".path")
    .data(data.chartData, function(d){return d.vNm;})
    .enter().append("path")
        .attr("d", function(d){
            return("M " + x(d.vNm) + " " +  y(1200 + d.values.reduce(function(sum, d){return sum + d.amount;},0))
            + " L " + 43 + x(d.vNm) + " " + y(1200 + d.values.reduce(function(sum, d){return sum + d.amount;}, 0))
            + " L " + 21.5 + x(d.vNm) + " " + y(d.values.reduce(function(sum, d){ return sum + d.amount;}, 0)) + " z"
            );
        });

正如你所看到的,我试图将43和21.5添加到我的x(d.vNm)。我已经尝试过几种不同的方式做到这一点,但无济于事。这是我尝试时在元素中显示的内容:enter image description here

并显示:enter image description here

(我现在不关心标签,他们很快就会变成一个传奇,我每个栏上都会有黑色矩形。我只需要三角形就在正确的位置。 )

1 个答案:

答案 0 :(得分:1)

当您执行" L " + 43 + x(d.vNm)时,您要求Javascript将43添加到字符串" L ",这将导致" L 43"。然后以相同的方式添加对x的调用结果。如果您希望将数字添加为数字,则需要通过额外的括号告诉Javascript有关添加的优先顺序:

" L " + (43 + x(d.vNm))

总的来说,您不需要手动将某些东西添加到刻度的输出中 - 通过调整刻度的范围可以实现相同的效果。