我正在制作各种财务信息图表 - 例如,行,条和饼。数据来自客户端为.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.我还需要保留索引值。
有没有办法过滤嵌套过程以排除空值?
答案 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
希望这有帮助!