【发布时间】:2015-07-16 13:09:43
【问题描述】:
我正在尝试使用库 d3 根据日期从 csv 文件中呈现图表。
我可以轻松地显示整个 csv 文件的图表,但我希望(使用下面的示例)仅显示 6 月以来的日期数据。
csv文件如下:
date, close
15/06/15,200
15/06/15,250
10/06/15,300
05/06/15,500
25/05/15,200
20/05/15,100
好的,这样解析日期就可以了,我现在正在将日期与匹配的格式进行比较。不过,有些事情是没有意义的。
d3.csv("txt.csv", function(error, data) {
data2 = data.filter(function(d) { return d.date <= timeFormat(parseDate("10/06/15")) });
data2.forEach(function(d) {
d.date = timeFormat(parseDate(d.date));
d.close = +d.close;
});
var timeFormat = d3.time.format("%d/%m/%y");
var parseDate = d3.time.format("%d/%m/%Y").parse;
当我 console.log(data2);我确实得到了一些数组,这意味着它正在找到一些行,问题是它从 csv 中找到完全不符合我的
P.S.:为清楚起见,我简化了 csv。我的真实情况应该只在 csv 末尾拾取 2 行,但它从 csv 的其余部分获取数百行(但不是所有行!!!)。
知道发生了什么吗?
【问题讨论】:
-
d3 尺度用于将域输入转换为范围输出。所以不要使用那些:-)。相反,如果只需要一部分数据,则需要对数据进行过滤。
-
过滤数据,但是我可能会保留加载的数据完整并从过滤操作中创建一个新数组,例如trimmedData = data.filter(...) 这将允许您稍后更改正在查看的数据或更轻松地创建数据的多个视图
-
这正是我想做的,Tom P,非常感谢。最终我想将上个月和本月的数据叠加在同一张图上,所以我认为我现在非常接近了。
标签: javascript csv d3.js