当我转换X轴时,控制台会记录错误(转换可能有点不正确,因为它以我自己的语言记录):
Unexpected value "translate(NaN, 0)" when parsing transform-attribute
错误似乎来自axis.js:154。虽然记录了错误,但一切正常。
我调试了问题,发现第154行d
为undefined
。这导致以下结果:
var v0 = x0(d); //v0 = NaN
isFinite(v0) //false
x1(d) //NaN
(isFinite(v0) ? v0 : x1(d)) // false ? NaN : NaN -> Always returns NaN
return "translate(" + (isFinite(v0) ? v0 : x1(d)) + ",0)" //Alwaysreturns "translate(NaN, 0)" for d = undefined
我使用D3的3.5.5版本,我的代码如下(仅相关部分):
var x = d3.scale.linear().range([0, getWidthWithoutMargin()]);
var xAxis = d3.svg.axis();
xAxis.scale(x);
xAxis.orient("bottom");
xAxis.tickFormat(formatFunction);
xAxis.ticks(1);
x.domain([0, getMaxPercentagePrediction()]);
//The chart is created after this
//When updating I do this:
xAxis.tickValues([0, getMaxPercentagePrediction()]);
var xAxisElement = d3.select(".chart g").select(".x.axis");
xAxisElement.call(xAxis);
getWidthWithoutMargin
和getMaxPercentagePrediction
始终会返回一个数字(而不是undefined
或其他内容)。即使我用硬编码值替换它们,仍会记录错误。
我希望有人可以帮我解决这个问题。
提前致谢!