这应该有一个非常直接和明显的答案,但我的研究并没有给我带来一个。这是个问题。这是我的道路:
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)。我已经尝试过几种不同的方式做到这一点,但无济于事。这是我尝试时在元素中显示的内容:
(我现在不关心标签,他们很快就会变成一个传奇,我每个栏上都会有黑色矩形。我只需要三角形就在正确的位置。 )
答案 0 :(得分:1)
当您执行" L " + 43 + x(d.vNm)
时,您要求Javascript将43
添加到字符串" L "
,这将导致" L 43"
。然后以相同的方式添加对x
的调用结果。如果您希望将数字添加为数字,则需要通过额外的括号告诉Javascript有关添加的优先顺序:
" L " + (43 + x(d.vNm))
总的来说,您不需要手动将某些东西添加到刻度的输出中 - 通过调整刻度的范围可以实现相同的效果。