javascript - 使用具有缩放功能的组 - 准确变换的问题

标签 javascript d3.js

我正在尝试自定义 Brush & Zoom使用组的示例。我有一个我的尝试的工作示例 here

红色圆圈只是形状。每个绿色矩形都是一组,其中包含一个矩形形状。我正在努力弄清楚如何翻译这些组。如图所示,绿色矩形组的翻译不准确。

我一直在寻找示例等,但没有找到。这无疑是非常简单的。有人可以告诉我我做错了什么吗?我正在使用的缩放代码如下(工作示例是 here )

function zoomed() {
  if (d3.event.sourceEvent && d3.event.sourceEvent.type === "brush") return;
  var t = d3.event.transform;
  x.domain(t.rescaleX(x2).domain());
  focus.select(".area").attr("d", area);

  // GREEN RECT GROUPS
  var boxGroups = focus.selectAll("g.box-group")
         .attr("transform",function(d,i){
              return  "translate(" + x(d.date) + "," + 0 + ")"
         });

  // RED CIRCLES
  focus.selectAll("circle.circus").attr("cx", function (d, i) { return x(d.date); })

 // other code from original example deleted for clarity       
}

enter image description here

最佳答案

当您最初定位矩形时,您可以通过设置矩形本身的xy属性来实现。但是,当您更新时,您正在翻译父矩形 g (并且仍然保留矩形上的 x 位置)。这产生了位置的“加倍”。真的,我不明白为什么你将每个矩形包装在它自己的 g 中,删除它并继续通过 x 属性定位它们。

这是更新的 block .

顺便说一句,您还需要将 clip-path: url(#clip); 应用到您的圆圈和矩形,以防止它们渗入绘图的轴。

关于javascript - 使用具有缩放功能的组 - 准确变换的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44463726/

相关文章:

javascript - 将外部数据从数据库动态加载到 d3.js

javascript - 如何在不附加它的情况下创建 "svg"对象?

javascript - 读取一个巨大的 csv 文件并使用 d3 在 Javascript 中填充 map

javascript - d3 垂直于圆弧内半径的文本

javascript - "holds"addEventListener 是哪个对象?

javascript - 如何在 React Native 中转发其 ref 的组件中使用 Ref

javascript - 通过函数声明公开函数

javascript - 从 PHP7 调用 Mongodb 存储函数

javascript - d3js : Add quantitative dimension to Hierarchical Edge Bundling

javascript - JavaScript 数组中的负索引是否应该影响数组长度?