4

我正在使用 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"

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

4

1 回答 1

10

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

您不应该对d3.svg.arc路径数据使用默认字符串插值器;arcs 必须使用自定义补间在极坐标中插值。下面是两个简短的示例,演示如何在数据空间中插入弧:

于 2012-04-10T14:34:20.017 回答