【发布时间】:2014-03-10 10:36:15
【问题描述】:
我创建了一个堆叠图表动画/更新应用程序。然而,似乎有 NaN 值被传递到 y 和 height 变量中。我不确定出了什么问题。如果您切换数据,图表最终会填满。
但问题可能首先出现在设置yaxis时
svg.select("g.y")
.transition()
.duration(500)
.call(methods.yAxis);
条形矩形进入/退出代码中似乎有问题。
//_morph bars
var bar = stacks.selectAll("rect")
.data(function(d) {
return d.blocks;
});
// Enter
bar.enter()
.append("rect")
.attr("class", "bar")
.attr("y", function(d) { return methods.y(d.y1); })
.attr("width", methods.x.rangeBand())
.style("fill", function(d) { return methods.color(d.name); });
// Update
bar
.attr("y", methods.height)
.attr("height", initialHeight)
.attr("width", methods.x.rangeBand())
.transition()
.duration(500)
.attr("x", function(d) { return methods.x(d.Label); })
.attr("width", methods.x.rangeBand())
.attr("y", function(d) { return methods.y(d.y1); })
.attr("height", function(d) { return methods.y(d.y0) - methods.y(d.y1); })
// Exit
bar.exit()
.transition()
.duration(250)
.attr("y", function(d) { return methods.y(d.y1); })
.attr("height", function(d) { methods.y(d.y0) - methods.y(d.y1); })
.remove();
//__morph bars
【问题讨论】:
-
您不能在您的 JSFiddle 中提炼问题吗?即出现问题的最简单的代码集?您甚至可能在创建它时发现问题!
-
我不确定是什么造成了问题。尝试向多个图表提供数据时会出现此问题。其他图表的 y 数据在某处出现故障 - 但在切换一组更新后又回来了。例如仅适用于堆叠图表的 1 个实例 - jsfiddle.net/XnngU/17 - 好像插件不能很好地满足其他实例 - 就像需要重置或最初不为其他图表设置的东西
-
使其能够处理 2 个图表 - 打破第二个图表 - 有时 - jsfiddle.net/XnngU/18
-
你的数据结构一团糟——仔细查看你的“克隆”控制台日志的输出:每个堆栈中有五个“块”,而不是三个,第四个和第五个是命名为“blocks”和“total”,它们的所有值和你的整体“total”都是NaN。
-
我强烈支持@ChristopherHackett 的评论。您发布的代码总是非常复杂,方法调用其他方法,因此很难遵循。当您将事情分解为非常简单的示例时,您通常可以自己发现错误,如果没有,其他人可以更轻松地帮助您。
标签: javascript jquery d3.js charts