javascript - d3 选择 csv 文件的特定行

标签 javascript csv d3.js

我正在尝试使用库 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.time.format() 时有一个警告。在 javascript 中,当创建一个新的 Date(yyyy, mm, dd) 时,月份的数字可以是从 0 到 11。它们是从零开始的。在 d3.time.format() 中,月份不是从零开始的(从 1 到 12)。

interpreting what should be 15/06/15 as 2015-06-14T23:00:00.000Z...

不过这有点奇怪。当我执行以下操作时,d3 格式(如您定义的那样)会在 2015 年 7 月 15 日返回:

var someDate = new Date(2015,06,15);
var var timeFormat = d3.time.format("%d/%m/%y");
console.log(timeFormat(someDate));

所以我实际上得到了我期望得到的东西。它不打印 2015-06-15T00:00:00 或类似的东西......

然后还有一件事是关于 javascript 中的日期的。您可以阅读更多相关信息here 。然而,它有点过时了,它并不能解释为什么 d3.time.format 会解释完全不同的东西。您可以发布整个代码吗?您在哪里注意到错误?或者你是怎么注意到的?

关于javascript - d3 选择 csv 文件的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31455135/

相关文章:

javascript - 在另一个 js 文件中加载 jQuery

javascript - Firefox 中的 float 元素问题

javascript - 如何修改本地存储中数组内的现有对象

python - 将日期字符串 (YYYY/YYYY_mm.mdf) 转换为可用的日期 Python

javascript - 我可以获得从 $.Deferred() 返回的可在显示中使用的值吗?

javascript - 获取与选中的输入框处于同一级别的元素

php - 不带引号的 CSV 不适用于 fgetcsv

javascript - d3.js饼图时钟

javascript - 将 y 刻度扩展到 d3 条形图中所需数字的方法

java - 仅从 CSV 文件导入特定列