D3.js 如何混合有用的自动生成的滴答声(),同时指定滴答声间隔的最低粒度

D3.js 如何混合有用的自动生成的滴答声(),同时指定滴答声间隔的最低粒度,d3.js,D3.js,我正在使用D3创建一个时间序列图,我希望x轴的刻度下降不低于2小时,而不会产生太多的刻度 以构建我的观点的示例为例: var x = d3.scaleTime().domain([new Date(2020, 4, 8).setHours(8), new Date(2020, 4, 9)]) .range([0, 960]).ticks() ticks()会在未给出count或time interval参数时自动计算ticks,结果如下: console.log(x)输出:

我正在使用D3创建一个时间序列图,我希望x轴的刻度下降不低于2小时,而不会产生太多的刻度

以构建我的观点的示例为例:

 var x = d3.scaleTime().domain([new Date(2020, 4, 8).setHours(8), new Date(2020, 4, 9)])
        .range([0, 960]).ticks()
ticks()会在未给出count或time interval参数时自动计算ticks,结果如下:

console.log(x)输出:

这里的时间粒度太低(1小时)。我知道我可以通过将代码更改为:

 var x = d3.scaleTime().domain([new Date(2020, 4, 8).setHours(8), new Date(2020, 4, 9)])
        .range([0, 960]).ticks(d3.timeHour.every(2))
哪些产出:

0: Fri May 08 2020 08:00:00 
1: Fri May 08 2020 10:00:00 
2: Fri May 08 2020 12:00:00 
3: Fri May 08 2020 14:00:00
4: Fri May 08 2020 16:00:00 
5: Fri May 08 2020 18:00:00 
6: Fri May 08 2020 20:00:00 
7: Fri May 08 2020 22:00:00 
8: Sat May 09 2020 00:00:00 
太好了。但是问题是,如果我总是将d3.timeHour.every(2)传递到ticks函数中,那么对于每个场景,它都会给我太多的ticks。例如,如果域是两个相隔5天的日期,那么我将得到100个滴答声,而如果我只做了滴答声(),那么对于该示例,我将得到相当数量的滴答声

有没有办法告诉d3在每种情况下都使用自动生成的ticks(),但同时不要降低到低于2小时的时间间隔

0: Fri May 08 2020 08:00:00 
1: Fri May 08 2020 10:00:00 
2: Fri May 08 2020 12:00:00 
3: Fri May 08 2020 14:00:00
4: Fri May 08 2020 16:00:00 
5: Fri May 08 2020 18:00:00 
6: Fri May 08 2020 20:00:00 
7: Fri May 08 2020 22:00:00 
8: Sat May 09 2020 00:00:00