Javascript d3.js筛选嵌套数据中的空值
我正在制作各种各样的财务信息图表——比如线条、条形图和饼图。数据以.csv的形式来自客户端,其中一些空值由连字符表示。我无法更改数据的格式。下面是一个例子: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
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,非常感谢,它过滤良好,但不保留索引值。我怀疑这可能不可能。