2017-09-28 103 views
-1

所以我希望能够放大(我的比例尺)和(我的滑块)中的一件事物,以便当我的滑块在4月份2005年4月仍然停留在2005年4月,尽管它的规模放大了一个更广阔的视角(如从2005年的显示走向2000-2010),缩小规模和滑块(顺便提一句)按比例放大。我希望能够按比例放大和缩小比例

我的问题与Brush and Zoom example 之间的区别在于我希望底下的比例尺发生变化,图上的比例保持不变,并且比例尺上的比例发生变化。

我的问题是我用来缩放的event.transform对象,它给了我一个K值和一个X值,我无法弄清楚如何进行逆向工程,有没有办法解决这个问题?

既然有人想一些代码来看看:

function zoomScale() { 
      let t = d3.event.transform; 

      if(t) { 
       xScale1.domain(t.rescaleX(xScale2).domain()); 
       context.select(".axis--x").call(xAxis2); 
       context.select(".brush").call(brush.move, xScale2.range().map(t.invertX, t)); 
      } 

     } 

这使得规模较大和大刷子,我想刷变得更小比例的规模有多大大得。

+1

您可以提供一个小提琴/ plunkr与您的代码和迄今为止尝试过的吗?或者你想要达到的目标的形象?我有点不清楚你想要做什么。 – mkaran

+0

我添加了一些代码,如果有帮助 –

回答

1

好吧,我终于明白了。每当你有一个选择的规模,你把它保存为一个变量像在我的例子latestBrushDateSelection。您还需要一个新的TimeScale来保存轴的原始域,在我的情况下是xScale3。然后缩放功能将如下所示:

function zoomChart() { 
      const t = d3.event.transform 

      xScale2.domain(t.rescaleX(xScale3).domain()) 
      context.select('.axis--x').call(xAxis2) 
      context.select('.brush').call(brush.move, latestBrushDateSelection.map(d => xScale2(d))) 

     }