d3.js - 旋转 D3 符号

标签 d3.js

我正在渲染一个如下所示的 d3 符号:

svg.append('path')
    .attr("d", d3.svg.symbol().type("triangle-up").size(10))
    .attr("transform", function(d) { return "translate(" + 100 + "," + 100 + ")"; })
    .style("fill", "red")

我想旋转这个三角形,使三角形指向左 <| .如何在旋转此符号的同时将其保持在我的可视化中的相同位置?我一直在尝试执行以下操作,但符号移动到我的可视化项的左上角(它不会停留在转换创建的位置):
svg.append('path')
    .attr("d", d3.svg.symbol().type("triangle-up").size(10))
    .attr("transform", function(d) { return "translate(" + 100 + "," + 100 + ")"; })   
    .attr("transform", "rotate(-45)")
    .style("fill", "red")

最佳答案

问题是第二次调用 set transform在这里覆盖第一个值:

.attr("transform", function(d) { return "translate(" + 100 + "," + 100 + ")"; })   
.attr("transform", "rotate(-45)") // Only this value will remain as the value of the attr

要修复它,您应该将旋转附加到 transform 的原始值上。 :

.attr("transform", function(d) { return "translate(" + 100 + "," + 100 + ") rotate(-45)"; })   

另一种解决方案是把symbol嵌套 g元素并对每个元素应用单独的变换,example .

关于d3.js - 旋转 D3 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19757955/

相关文章:

javascript - d3 操作 html 的最佳方式是什么?

d3.js - 在 RequireJS 中加载 d3-selection-multi 和 d3 v4 的简单方法是什么?

javascript - D3 补间 - 暂停和恢复控件

javascript - D3.js图表​​调用并缩放后重新绘制区域

d3.js - 使用 D3 生成的 SVG 不像看似相同的静态 SVG 内容那样缩放

javascript - 附加文本未显示在 d3 v4 中

javascript - 如何在我的数据之间使用流畅的动画向左移动多条路径

javascript - 使用自定义函数在 d3.js 中创建元素

d3.js - 传单.js : too slow with custom svg markers (and a lot of points)

javascript - 如何使流图响应(d3.js)?