Javascript D3js-两条路径之间的平滑过渡
我是两个非常不同的路径,我想顺利地改变一个,使它看起来像另一个。我尝试过在“d”属性上使用.transition()方法,但结果很差 以下是一个例子: 我使用的d3代码如下:Javascript D3js-两条路径之间的平滑过渡,javascript,svg,d3.js,Javascript,Svg,D3.js,我是两个非常不同的路径,我想顺利地改变一个,使它看起来像另一个。我尝试过在“d”属性上使用.transition()方法,但结果很差 以下是一个例子: 我使用的d3代码如下: var svg = d3.select("body") .append('svg') .attr('width', '375px') .attr('height', '490px'); svg.append('path'
var svg = d3.select("body")
.append('svg')
.attr('width', '375px')
.attr('height', '490px');
svg.append('path').attr('d', d_t0);
svg.selectAll('path').transition()
.duration(3500).delay(1000)
.attr('d', d);
创建这种转换的最佳方式是什么
非常感谢这里的问题是,第一条路径只有10段,第二条路径有42段。这些路径非常不同,因此不可能使用内置的路径渐变在它们之间进行转换 D3很好地将两条结构相似的路径(相同数量的段和相同类型的段)连接起来。结构越不同,事情就越乱 考虑一下 前两个路径数据
d_1
和d_2
具有相同的段数和类型,只有端点发生变化。两者之间的过渡是无缝的
第二个双路径数据d_3
和d_4
具有相同的段数,但最后的段是不同的类型(直线位于d_3
,二次曲线位于d_4
)。过渡对于到最后一点的所有点来说都很好,但是最后一段显示的跳跃与您在示例中体验到的相同。这是因为二次曲线需要一个控制点,当过渡开始时,控制点必须在稀薄的空气中实现,从而导致跳跃
坏消息是,解决此问题的唯一方法是为路径数据属性创建自定义tween函数。好消息是,这是一个普遍的问题,聪明人已经找到了坚实的解决方案
是Mike Bostock创建的一个很好的路径连接函数
在您的示例中实施时,它会给出一个相当平滑的结果:
希望这能有所帮助。这里的问题是第一条路径只有10段,第二条路径有42段。这些路径非常不同,因此不可能使用内置的路径渐变在它们之间进行转换 D3很好地将两条结构相似的路径(相同数量的段和相同类型的段)连接起来。结构越不同,事情就越乱 考虑一下 前两个路径数据
d_1
和d_2
具有相同的段数和类型,只有端点发生变化。两者之间的过渡是无缝的
第二个双路径数据d_3
和d_4
具有相同的段数,但最后的段是不同的类型(直线位于d_3
,二次曲线位于d_4
)。过渡对于到最后一点的所有点来说都很好,但是最后一段显示的跳跃与您在示例中体验到的相同。这是因为二次曲线需要一个控制点,当过渡开始时,控制点必须在稀薄的空气中实现,从而导致跳跃
坏消息是,解决此问题的唯一方法是为路径数据属性创建自定义tween函数。好消息是,这是一个普遍的问题,聪明人已经找到了坚实的解决方案
是Mike Bostock创建的一个很好的路径连接函数
在您的示例中实施时,它会给出一个相当平滑的结果:
希望这能有所帮助。这里的问题是第一条路径只有10段,第二条路径有42段。这些路径非常不同,因此不可能使用内置的路径渐变在它们之间进行转换 D3很好地将两条结构相似的路径(相同数量的段和相同类型的段)连接起来。结构越不同,事情就越乱 考虑一下 前两个路径数据
d_1
和d_2
具有相同的段数和类型,只有端点发生变化。两者之间的过渡是无缝的
第二个双路径数据d_3
和d_4
具有相同的段数,但最后的段是不同的类型(直线位于d_3
,二次曲线位于d_4
)。过渡对于到最后一点的所有点来说都很好,但是最后一段显示的跳跃与您在示例中体验到的相同。这是因为二次曲线需要一个控制点,当过渡开始时,控制点必须在稀薄的空气中实现,从而导致跳跃
坏消息是,解决此问题的唯一方法是为路径数据属性创建自定义tween函数。好消息是,这是一个普遍的问题,聪明人已经找到了坚实的解决方案
是Mike Bostock创建的一个很好的路径连接函数
在您的示例中实施时,它会给出一个相当平滑的结果:
希望这能有所帮助。这里的问题是第一条路径只有10段,第二条路径有42段。这些路径非常不同,因此不可能使用内置的路径渐变在它们之间进行转换 D3很好地将两条结构相似的路径(相同数量的段和相同类型的段)连接起来。结构越不同,事情就越乱 考虑一下 前两个路径数据
d_1
和d_2
具有相同的段数和类型,只有端点发生变化。两者之间的过渡是无缝的
第二个双路径数据d_3
和d_4
具有相同的段数,但最后的段是不同的类型(直线位于d_3
,二次曲线位于d_4
)。过渡对于到最后一点的所有点来说都很好,但是最后一段显示的跳跃与您在示例中体验到的相同。这是因为二次曲线需要一个控制点