d3.js过滤嵌套数据中的空值

时间:2015-12-13 09:58:20

标签: javascript d3.js filter nested

我正在制作各种财务信息图表 - 例如,行,条和饼。数据来自客户端为.csv,其中一些空值由连字符表示。数据给我的格式不是我可以改变的。这是一个例子:

    d3.csv("data/net.csv", function(error, data) {
      var headers = d3.keys(data[0]).filter(function(head) {
      return head != "Month";
    });

            data.forEach(function(d) {
              d.month = parseDate(d.Month);
    });

      var categories = headers.map(function(name) { 

        return {
          name: name, 
          values: data.map(function(d) { 
            return {
              date: d.month, 
              rate: +(d[name]),
              };
          }),
        };

      });

我使用以下代码嵌套数据并且它工作正常,但空值导致了各种各样的问题。

create!

当我定义一条线时没有问题,因为我可以使用.defined,但是为了在条形图上的数据点或矩形上添加圆圈,会导致NaN破坏可视化。

理想情况下,我希望嵌套数据不包含空数据点,而不是尝试在呈现后处理形状。也就是说,从上面的数据我喜欢“实际”的数据。和'预测'数组只有六个对象,而预算'数组有12.我还需要保留索引值。

有没有办法过滤嵌套过程以排除空值?

1 个答案:

答案 0 :(得分:2)

添加过滤器以删除所有NaN元素,然后执行以下嵌套:

 return {
              name: name,
              values: data.filter(function(k){return !isNaN(+k[name]);}).map(function(d) {
                return {
                  date: d.month,
                  rate: +(d[name]),
                };
              }),
            };

工作代码here

希望这有帮助!