javascript - D3更新画笔的比例不更新画笔

标签 javascript d3.js svg data-visualization

我想在 D3 版本 3.5.6 中创建一个可缩放、可刷的时间轴。现在我没有使用 D3 的缩放行为,而只是使用了两个缩放按钮。我的问题如下:单击按钮时,我更新比例并重绘轴和画笔。由于某种原因,画笔不会更新范围矩形和 handle ,而只会更新背景。我知道我实际上并没有更新画笔的 .extent()。但是当比例改变时画笔不应该更新吗?

这是代码的相关部分。其余的可以在 this fiddle 中找到.

document.getElementById('in').addEventListener('click', zoom.bind(null, .1));
document.getElementById('out').addEventListener('click', zoom.bind(null, -.1));

function zoom(step) {
  var offset;

  zoomScale += step;

  if(zoomScale < 1)
    zoomScale -= step;

  offset = (zoomScale * width - width) / 2;

  // updating the scale
  xScale
    .range([-offset, width + offset]);

  // redrawing the brush which doesn't seem to have effect I expected
  brushGroup
    .call(brush);

  // redrawing the axis which works fine
  xAxisGroup
    .transition()
    .call(xAxis);      
}

非常感谢!

最佳答案

显然您需要重置画笔的范围,因此内部的 xExtentyExtent 变量被重置。对我来说似乎是个错误。

brush.extent(brush.extent());

https://jsfiddle.net/azksfjjw/6/

关于javascript - D3更新画笔的比例不更新画笔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32720469/

相关文章:

javascript - 传递给监听器的第三个参数是什么?

svg - 如何在svg中将一条路径分成两条路径

javascript - 将矩形的高度动画化为向上而不是向下

javascript - 在数据表中的 fnInitComplete 函数内使用 fnDrawCallback

javascript - 使用 D3.js 的 typescript 类型转换

javascript - 将 React 组件渲染到 Fancybox

javascript - 如何使用 tsv 或 csv 从 txt 文件中获取数据以排列在 d3.js 中?

javascript - 将 MathJax 渲染成 PDF

javascript - 调用 PHP 文件会使每次点击发送的请求量增加一倍

javascript - 提交表单后如何留在同一页面