Javascript 当路径过多时,如何提高d3日暴图的钻探性能?比如动态显示部分级别?

Javascript 当路径过多时,如何提高d3日暴图的钻探性能?比如动态显示部分级别?,javascript,d3.js,sunburst-diagram,Javascript,D3.js,Sunburst Diagram,我是d3新手,现在正试图用一组非常大的数据绘制一张太阳暴流图。但我发现,随着路径数的增加,图表的钻取变得单调,就像停止一秒钟然后钻取一样 有什么办法可以改进这一点吗?我想显示有限数量的级别,但如何使显示级别在中心更改时动态更改 function click(d) { var duration = config.animationDuration || config.animationDuration === 0 ? config.animationDuration : 1000;

我是d3新手,现在正试图用一组非常大的数据绘制一张太阳暴流图。但我发现,随着路径数的增加,图表的钻取变得单调,就像停止一秒钟然后钻取一样

有什么办法可以改进这一点吗?我想显示有限数量的级别,但如何使显示级别在中心更改时动态更改

function click(d) {
    var duration = config.animationDuration || config.animationDuration === 0 ? config.animationDuration : 1000;
    path.transition()
        .duration(duration)
        .attrTween("d", arcTween(d))

    path.attr("display", function(d){
        if(d.depth>config.drillDownPath.length + data.levelLimit-1) return "none";
    });    }
在上面的代码中,我跟踪了图表的深入路径,以确定是否显示了路径。但这并没有解决问题,因为路径仍然存在于DOM中


有人能帮我吗?谢谢

我知道这有点晚了,但我可能会尝试显示一个大的层次数据集,允许用户深入到任何级别


通过一次只渲染和转换2-3个级别的圆弧,您的转换可能会滞后更少,图表可能会更可读。然而,正如Lars所提到的,在没有看到更多代码的情况下,给你一个具体的演示是非常困难的…

我知道这有点晚了,但我可能会尝试显示一个大的分层数据集,允许用户深入到任何级别


通过一次只渲染和转换2-3个级别的圆弧,您的转换可能会滞后更少,图表可能会更可读。然而,正如Lars所提到的,在没有看到更多代码的情况下给你一个具体的演示是非常困难的…

你能发布一个完整的例子吗,最好是在JSFIDLE或类似的东西上?如果没有这些,就不可能确切地说发生了什么——可能是计算布局的性能问题,渲染的性能问题,或者是动画的问题。嗨,拉尔斯,谢谢你的回复。我用angular编写了viz,因此有控制器指令服务层,很难显示所有代码。我把我的主要d3代码粘贴在这里。事实上,我不确定业绩不佳的原因。也许你是对的,这不是因为数据量大。但是,当我的数据集不是那么大时,所有的渲染和动画都很好。谢谢,但是你的JSFIDLE不起作用。这还取决于您的数据集是什么样的大数据集——多个级别还是一个级别上的事物数量?我在angualr框架中编写了sunburst a类作为服务,因此指令和图表服务之间的许多参数和通信很难在JSFIDLE中显示。我的数据集可能有10多个级别,而且在一个级别上有很多弧。对于提高sunburst渲染大型数据集的性能,您有什么建议吗?我的arcTween函数有问题吗?非常感谢您的帮助。正如我所说的,如果看不到一个有效的示例,很难判断。您能发布一个完整的示例吗,最好是在JSFIDLE或类似的东西上?如果没有这些,就不可能确切地说发生了什么——可能是计算布局的性能问题,渲染的性能问题,或者是动画的问题。嗨,拉尔斯,谢谢你的回复。我用angular编写了viz,因此有控制器指令服务层,很难显示所有代码。我把我的主要d3代码粘贴在这里。事实上,我不确定业绩不佳的原因。也许你是对的,这不是因为数据量大。但是,当我的数据集不是那么大时,所有的渲染和动画都很好。谢谢,但是你的JSFIDLE不起作用。这还取决于您的数据集是什么样的大数据集——多个级别还是一个级别上的事物数量?我在angualr框架中编写了sunburst a类作为服务,因此指令和图表服务之间的许多参数和通信很难在JSFIDLE中显示。我的数据集可能有10多个级别,而且在一个级别上有很多弧。对于提高sunburst渲染大型数据集的性能,您有什么建议吗?我的arcTween函数有问题吗?非常感谢你的帮助。正如我所说的,如果没有一个有效的例子,真的很难说。