javascript - D3 v4 散点图数据点未在缩放时更新

标签 javascript angular d3.js

我正在使用d3 v4制作散点图,并希望应用缩放,以便我可以在数据点彼此重叠时看到它们,我在这里面临的问题是xy 轴工作正常,但数据点由于某种原因没有更新。

我正在尝试选择点/圆圈并再次绘制它们,但由于某种原因我无法选择它们,我不知道为什么点没有更新,非常感谢任何帮助。

注意:我的应用程序位于 Angular 4 中,因为我在 plunker 中找不到 Angular 2/4 模板在 JavaScript 中执行操作。

最佳答案

您刚刚错过了 2 件小事:

  1. 缩放功能中,要使用的比例将是新的 X 和 Y 比例,因为您必须在新的 X 和 Y 比例中变换圆圈。域名。

    circles.attr('cx', (d) => xNewScale(d.duration))
       .attr('cy', (d) => yNewScale(d.priority));
    
  2. 选择:

    var circles = svg.selectAll('dot')
      .data(chartData)
      ....
      .append('svg:title')
      .html(...)
    

实际上会返回“标题”作为当前选择,所以现在,变量circles是一个标题的节点组,其属性(cx和cy)在缩放功能中发生变化,而缩放功能并没有改变。我们想要什么,因为我们想要更改 <circle> 的属性s。因此,将上面的内容更改为以下内容:

// Add the scatterplot
var circles = svg.selectAll("dot")
  .data(chartData)
  .enter()
  ....
  .attr('fill' ..);

// NOTE THE CHANGE HERE
circles
  .append('svg:title')
  .html(d => {
    return 'Date : ' + timeFormat(new Date(d.start)) + ',<br> Description: ' + d.description + ',<br> Impact: ' + d.priority + ',<br> Hours: ' + Math.round(d.duration)
  });

同样,我对红色圆圈(外部)进行了更改。

包含上述所有内容,这是您的代码的分支:

https://plnkr.co/edit/61zf86q6cpIT4MIyhZKo?p=preview

希望这有帮助。

关于javascript - D3 v4 散点图数据点未在缩放时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50859919/

相关文章:

javascript - D3 强制布局 : Collapse Subset of Child Nodes (Opacity Change)

java - 如何从一个webapp自动登录到另一个webapp

php - jquery向下滑动-向上滑动的表单-第一次默认隐藏,

javascript - 如何将 ORM 风格添加到 TypeScript 和 Angular2^ 中?

node.js - @angular-cli 安装失败,request@2.88.2 : request has been deprecated (mac) 已弃用

d3.js 条形图,每条记录均包含正负条(赢/负)

javascript - Asp.net-MVC 中特定隐藏字段的客户端验证

javascript - React Search 标题结果和 Pagination Material UI

javascript - Angular ng 重复表 : dynamic columns from object

javascript - 使用 d3.js 的 svg View 框 : space above graph is still too large