【问题标题】:Transitioning sunburst in D3.js在 D3.js 中过渡旭日形
【发布时间】:2012-04-22 18:50:18
【问题描述】:

我正在使用 d3 进行数据驱动的可视化。我有一个类似于旭日形的结构(但只有一层,有点像中间有洞的饼图)。

通过单击键盘上的箭头,可视化的数据会发生变化,因此会出现旭日形。特别是 innerRadius 会根据数据的特定属性而变化,并且会添加、删除和更新一些元素。

我无法正确地从一个旭日形过渡到另一个旭日形。除了更新现有元素之外,过渡几乎可以。

例如假设我在以下两条数据中有共同的元素来可视化,例如

[{'name': 'A', 'value': 100}, {'name': 'B', 'value': 100}, {'name': 'C', 'value': 100}]

[{'name': 'A', 'value': 300}, {'name': 'D', 'value': 200}].

在上面的示例中,我希望与元素 A 对应的弧线可以顺利更新,就像 d3 网站上的 Sunburst 示例一样,B 和 C 元素消失(我设法做到了)和 D元素看起来很平滑,例如不断增长的弧线,或类似的东西。

我很努力,但总是收到如下控制台日志:

Error: Problem parsing d="M307.2125548508473,-80.28703629255259A350,350 0 0.816469152,1 -241.27474698802394,61.83978850098657L-172.92635975175665,38.77767308406868A238.60164101523165,238.60164101523165 0 0.816469152,0 210.15560219262875,-60.13103059122014Z"

我认为当数据在一个可视化和另一个可视化之间发生变化时会出现问题,但我不知道如何解决。

【问题讨论】:

  • 你能提供一个链接或一些参考代码吗?很难说没有更多细节可能是什么问题......
  • 你是对的。无论如何,迈克给我的 sn-p 就像一个魅力。不过感谢您的关注。

标签: javascript d3.js transition sunburst-diagram


【解决方案1】:

解析错误是由 SVG 的 elliptical arc commandA 的简单路径插值引起的。椭圆弧的形式为“rx ry x-axis-rotation large-arc-flag sweep-flag x y”。如果您在圆弧命令上使用默认路径插值,您可能会无意中尝试插值其中一个标志,其值只能为零或一。如果您启用或禁用 innerRadius,则始终会发生此错误。

您不应该将default string interpolator 用于d3.svg.arc 路径数据;必须使用custom tween 在极坐标中内插圆弧。下面是两个简短的示例,演示如何在数据空间中插入弧:

【讨论】:

  • 非常感谢。我实际上尝试使用自定义补间但没有成功。你的快速 sn-p 让我很开心。谢谢迈克!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多