根据 d3 文档:
当插值为零或从零插值时,一些插值可能非常小。JavaScript 以指数表示法格式化小数字,不幸的是 CSS 不支持。例如,当将不透明度转换为淡入或淡出时,数字 0.0000001 将转换为字符串“1e-7”,然后被忽略,默认值为 1!为避免分散注意力的闪烁,请在 1e-6 而不是 0 处开始或结束过渡;这是未以指数表示法格式化的最小值。
这给了我一个直方图的问题,它有一些非常低的频率。矩形高度被内插为一个科学数字,会引发错误。我尝试了以下方法:
svg.selectAll(".bar")
.data(freq)
.filter(function(d) {return d.freq>0.005})
.transition()
.duration(1000)
.attr("y", function(d) { return y(d.freq); })
.attr("height", function(d) { return height - y(d.freq) })
这避免了最终值为零 - 但是我如何过滤掉那些初始值可能接近于零的元素?