Her*_*ill 2 javascript arrays date d3.js
这似乎应该是微不足道的.我想用来d3.time.scale()获得一系列均匀分布的日期,这些日期涵盖了一定的时间范围.例如,年
[2012-01-01, 2013-01-01, 2014-01-01]
Run Code Online (Sandbox Code Playgroud)
或几个月
[2012-01-01, 2012-02-01, 2012-03-01 ... 2014-12-01]
Run Code Online (Sandbox Code Playgroud)
管他呢.
所以我从这样开始:
var t = d3.time.scale()
.domain(d3.extent(dates))
.nice(d3.time.year);
Run Code Online (Sandbox Code Playgroud)
然后我会从文档中假设我能够做到这一点
var ticks = t.ticks(d3.time.month,1);
Run Code Online (Sandbox Code Playgroud)
......但这只会返回一个日期.
这给了我几个月的数组
var ticks = t.ticks(30)
Run Code Online (Sandbox Code Playgroud)
...但只是因为我大致告诉它生成了多少个刻度(30),我事先不知道(除非我自己做了一些繁重的工作,哪种方式违背了使用d3的目的) .
我不明白为什么每年,每月,每3个月或其他任何事情只是告诉我我想要它.
我在这里竖起了一个小提琴:http://jsfiddle.net/herbcaudill/LgGpd/4/
使用Date()构造函数不能可靠地工作 - 它基本上取决于浏览器.明确解析更安全.构造函数不会这样解析.
代替
var dates = getDates().map(function(d) { return new Date(d) });
Run Code Online (Sandbox Code Playgroud)
用这个:
var dates = getDates().map(function(d) {
return d3.time.format("%Y-%m-%d").parse(d);
});
Run Code Online (Sandbox Code Playgroud)
在这里修改了jsfiddle .