Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript d3.js筛选嵌套数据中的空值_Javascript_D3.js_Filter_Nested - Fatal编程技术网

Javascript d3.js筛选嵌套数据中的空值

Javascript d3.js筛选嵌套数据中的空值,javascript,d3.js,filter,nested,Javascript,D3.js,Filter,Nested,我正在制作各种各样的财务信息图表——比如线条、条形图和饼图。数据以.csv的形式来自客户端,其中一些空值由连字符表示。我无法更改数据的格式。下面是一个例子: Month,Actual,Forecast,Budget Jul-14,200000,-,74073.86651 Aug-14,198426.57,-,155530.2499 Sep-14,290681.62,-,220881.4631 Oct-14,362974.9,-,314506.6437

我正在制作各种各样的财务信息图表——比如线条、条形图和饼图。数据以.csv的形式来自客户端,其中一些空值由连字符表示。我无法更改数据的格式。下面是一个例子:

    Month,Actual,Forecast,Budget
    Jul-14,200000,-,74073.86651
    Aug-14,198426.57,-,155530.2499
    Sep-14,290681.62,-,220881.4631
    Oct-14,362974.9,-,314506.6437
    Nov-14,397662.09,-,382407.67
    Dec-14,512434.27,-,442192.1932
    Jan-15,511470.25,511470.25,495847.6137
    Feb-15,-,536472.5467,520849.9105
    Mar-15,-,612579.9047,596957.2684
    Apr-15,-,680936.5086,465313.8723
    May-15,-,755526.7173,739904.081
    Jun-15,-,811512.772,895890.1357
我一直在使用下面的代码嵌套数据,除了空值给我带来了各种各样的问题之外,它工作得很好

    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]),
              };
          }),
        };

      });
当我定义直线时没有问题,因为我可以使用.defined,但是对于在数据点或条形图上的矩形上附加圆圈,它会导致打破可视化的NaN

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


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

在进行嵌套之前,添加一个过滤器以删除所有NaN元素:

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


希望这有帮助

嗨,Cyril,非常感谢,它过滤良好,但不保留索引值。我怀疑这可能不可能。