Javascript 使用正确的数字创建路径
这应该有一个非常直接和明显的答案,但我的研究并没有给我带来一个答案。这就是问题所在。这是我的路径:Javascript 使用正确的数字创建路径,javascript,d3.js,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.r
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)中。我试过用几种不同的方法来解决这个问题,但都没有用。这就是我尝试时在元素中显示的内容:
以及显示器:
(我现在不关心标签,它们很快就会变成一个图例,而且我在每个条上都有黑色的矩形。我只需要三角形在正确的位置。)当你做“L”+43+x(d.vNm)
时,你要求Javascript将43
添加到字符串“L”
,这将导致“l43”
。然后以相同的方式添加调用x
的结果。如果希望将数字添加为数字,则需要用括号告诉Javascript添加的优先级顺序:
" L " + (43 + x(d.vNm))
一般来说,您不需要手动向刻度的输出中添加某些内容,这可以通过调整刻度的范围来实现。当您操作一个
浮点数时,几乎不可能用二进制表示该数字,如果它们需要绝对完美,你应该尝试截断或四舍五入,如果这对你精确的情况有用的话。例如@我的解码器很完美。非常感谢。