Javascript D3.js-如何将时域乘以标量?

Javascript D3.js-如何将时域乘以标量?,javascript,d3.js,zooming,scale,Javascript,D3.js,Zooming,Scale,我有一个固定的时间刻度: band.xScale = d3.time.scale() .domain([data.minDate, data.maxDate]) var updatedScale = d3.event.transform.rescaleX(scale); 我要通过缩放修改的对象: var zoom = d3.behavior.zoom() .scaleExtent([1, 10]) .on("zoom", zoomed); function zoomed

我有一个固定的时间刻度:

band.xScale = d3.time.scale()
  .domain([data.minDate, data.maxDate])
var updatedScale = d3.event.transform.rescaleX(scale);
我要通过缩放修改的对象:

var zoom = d3.behavior.zoom()
    .scaleExtent([1, 10])
    .on("zoom", zoomed);

function zoomed() {
    console.log(d3.event.scale);

    var oldDomain = bands[0].xScale.domain();
    var newDomain = ??? oldDomain * d3.event.scale ???
    bands[0].xScale.domain(newDomain);
    bands[0].redraw();
}
换句话说,将
[date1,date2]
域转换为具有新日期的新数组

我可以自己计算转换,但我必须使用类似于Moment.js的东西,而且d3似乎真的有一种内置的方法用于…

  • d3v4/d3v5
提供基于缩放事件更新比例的功能(可应用于时间比例):

可应用于时间轴上的缩放事件,例如:

var scale=d3.scaleTime()
.域名([新日期(2018年7月20日),新日期(2018年7月30日)])
.范围([0400]);
var轴=d3.轴底(刻度);
var svg=d3.选择(“svg”).追加(“g”)
.attr(“转换”、“翻译(50,30)”)
.呼叫(安讯士)
.call(d3.zoom().on(“zoom”,zomed));
函数缩放(){
var updatedScale=d3.event.transform.rescaleX(scale);
调用(axis.scale(updatedScale));
}


您是否承诺使用D3 v3来获得答案?否;这只是一个不幸的现实,我必须使用v3的当前项目。