当前位置: 代码迷 >> JavaScript >> d3选择csv文件的特定行
  详细解决方案

d3选择csv文件的特定行

热度:70   发布时间:2023-06-08 09:35:04.0

我正在尝试使用库d3根据日期从csv文件渲染图形。

我可以很容易地显示整个csv文件的图形,但是我想(使用下面的示例)仅显示例如六月的日期数据。

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中找到了完全随机的行,这些行根本不符合我的<=条件。

PS:为清楚起见,我简化了csv。 我的实际情况应该是在csv的末尾仅拾取2行,但是它从其余的csv中获得了数百行(但不是所有的行!!!!)。

知道发生了什么事吗?

使用d3.time.format()时需要注意。 在javascript中,当创建新的Date(yyyy,mm,dd)时,月份数可以从0到11。它们是从零开始的。 在d3.time.format()中,月份不是从零开始的(从1到12)。

解释应该是2015年5月15日为2015-06-14T23:00:00.000Z ...

不过这有点奇怪。 当我执行以下操作时,d3格式(如您所定义的)为我返回15/07/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中还有另一件事。 您可以了解更多信息。 但是,这有点陈旧,并且无法解释d3.time.format为什么会解释完全不同的内容。 您能否发布整个代码? 您在哪里注意到错误? 或您如何注意到?

  相关解决方案