如何避免 d3 插值中的小值

  • 本文关键字:插值 何避免 d3 d3.js
  • 更新时间 :
  • 英文 :


根据 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) })

这样可以避免结束值为零 - 但是如何过滤掉初始值可能接近零的元素?

在创建柱线时,您可以做同样的事情,即

svg.selectAll("rect").data(freq).filter(...)
   .enter().append("rect");

在这一点上,在将数据传递给 D3 之前对其进行预过滤实际上是有意义的,即使用 var filteredData = data.filter(...) 之类的东西并使用 filteredData .

最新更新