Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript dc.js pieChart切片移动_Javascript_Dc.js - Fatal编程技术网

Javascript dc.js pieChart切片移动

Javascript dc.js pieChart切片移动,javascript,dc.js,Javascript,Dc.js,我想在选中dc.js pieChart切片后将其向外移动 我想在选择饼图切片时基本上做到这一点: var arcOver = d3.svg.arc() .outerRadius(outerRadius + 10) .innerRadius(innerRadius + 10); 我希望在dc.js中将其作为默认行为 知道dc.js中的哪个函数需要更改以获得所需的效果吗?这实际上很烦人,原因有两个: 你必须反对dc.js的内置转换 半径或圆弧的所有内部计算均未公开 这是一个可以从外

我想在选中dc.js pieChart切片后将其向外移动

我想在选择饼图切片时基本上做到这一点:

var arcOver = d3.svg.arc()
    .outerRadius(outerRadius + 10)
    .innerRadius(innerRadius + 10);
我希望在dc.js中将其作为默认行为


知道dc.js中的哪个函数需要更改以获得所需的效果吗?

这实际上很烦人,原因有两个:

  • 你必须反对dc.js的内置转换
  • 半径或圆弧的所有内部计算均未公开
  • 这是一个可以从外部改变行为的地方,但实际上只改变库可能更简单

    我将分享一个部分解决方案,但有点尴尬,因为它只解决了第二个问题。在某个地方,我确实找到了一种方法来覆盖饼图转换的开始和结束状态,只是为了证明我可以做到

    相反,这只是在所有转换之后应用更改。所以它来回跳了一点

    我们需要从dc的
    pieChart
    中复制一些电弧生成代码:

    function arcGen(chart, offset) {
        var maxRadius =  d3.min([chart.width(), chart.height()]) / 2;
        var givenRadius = chart.radius();
        var radius = givenRadius && givenRadius < maxRadius ? givenRadius : maxRadius;
        return d3.svg.arc()
            .outerRadius(radius - chart.externalRadiusPadding() + offset)
            .innerRadius(chart.innerRadius() + offset);
    }
    
    下面是一个演示:

    显示跳跃行为的GIF:

    如果您致力于此方法,并且不关心转换,您可以关闭它们以消除跳跃:

    chart
      .transitionDuration(0)
    

    谢谢戈登的更正。
    chart
      .transitionDuration(0)