如何从 D3 轴获取当前刻度值的数量?
How do I get the current number of tick values from a D3 axis?
假设我有一些数据可以跨越 28-31 天。我不知道数据跨越多少天,但我知道开始和结束日期,我创建了一个 d3 时间尺度,使用这两个日期作为域。
如果我指定我想要每天 1 个刻度,有没有办法让轴达到 return 它将创建多少个刻度?
或者换句话说,是否有另一种方法可以确定 Javascript 两个日期范围内有多少天?
查看 d3.time.day
。这就是 d3.time.scale
用来做 "time math" 的事情。很难弄清楚如何使用,但看起来有一种方法会 return 每天在两个日期之间(表示为每天午夜的 Date 对象)。
例如,这是从 1 月 24 日到现在经过的天数:
d3.time.day.range(new Date(2015,0,24), new Date())
/* returns
[
Sat Jan 24 2015 00:00:00 GMT-0500 (EST),
Sun Jan 25 2015 00:00:00 GMT-0500 (EST),
Mon Jan 26 2015 00:00:00 GMT-0500 (EST),
...
Tue Feb 03 2015 00:00:00 GMT-0500 (EST),
Wed Feb 04 2015 00:00:00 GMT-0500 (EST)
]
*/
那么你可以取那个数组的 .length
就可以了...还有计算小时数、周数、月数等的等效函数。
也许还有一种方法可以只获取天数 — 而无需生成实际的日期数组 — 但我找不到。
假设我有一些数据可以跨越 28-31 天。我不知道数据跨越多少天,但我知道开始和结束日期,我创建了一个 d3 时间尺度,使用这两个日期作为域。
如果我指定我想要每天 1 个刻度,有没有办法让轴达到 return 它将创建多少个刻度?
或者换句话说,是否有另一种方法可以确定 Javascript 两个日期范围内有多少天?
查看 d3.time.day
。这就是 d3.time.scale
用来做 "time math" 的事情。很难弄清楚如何使用,但看起来有一种方法会 return 每天在两个日期之间(表示为每天午夜的 Date 对象)。
例如,这是从 1 月 24 日到现在经过的天数:
d3.time.day.range(new Date(2015,0,24), new Date())
/* returns
[
Sat Jan 24 2015 00:00:00 GMT-0500 (EST),
Sun Jan 25 2015 00:00:00 GMT-0500 (EST),
Mon Jan 26 2015 00:00:00 GMT-0500 (EST),
...
Tue Feb 03 2015 00:00:00 GMT-0500 (EST),
Wed Feb 04 2015 00:00:00 GMT-0500 (EST)
]
*/
那么你可以取那个数组的 .length
就可以了...还有计算小时数、周数、月数等的等效函数。
也许还有一种方法可以只获取天数 — 而无需生成实际的日期数组 — 但我找不到。