高图-隐藏轴会影响重绘时的性能

时间:2018-08-13 14:33:07

标签: highcharts

一段时间以来,我在重绘图表时遇到性能问题

例如当我尝试使用setData函数在图表上重绘单个系列时-它重绘了所有系列

在调试时,我发现每个轴/系列上都有一个isDirty选项,如果在任何轴/系列上都正确,则整个图表将被重画

然后,我试图找出我的哪些元素具有该选项-并认识到只有一个元素具有该选项:

yAxis.push({
    max: 100,
    min: 0,
    visible: false
});

那是我在图表上用于其他数据的不可见轴

问题恰好在visible标志上,当它为真时-一切正常且正常

当它为假时-它占用了表演的很大一部分

我没有发现任何影响性能的isDirty标志或visible: false

那么有没有isDirty标志的隐藏轴的可能性吗?

UPD 简单的小提琴来显示它

https://jsfiddle.net/q6ntdxsy/8/

更改js部分中的第一个轴visible标志,并且isDirty将为false

1 个答案:

答案 0 :(得分:0)

轴渲染后,每个轴的内部“ isDirty”标志均设置为false。不会渲染不可见的轴,因此在可见状态更改之前,此标志将设置为false。如果一个轴脏了,则重新绘制所有轴。

您可以从Highcharts源代码:https://code.highcharts.com/highcharts.src.js

推断出它是如何工作的。

解决方案可能是实验性的覆盖“渲染”方法,以禁用隐藏轴的“ isDirty”标志。

// Axes
if (chart.hasCartesianSeries) {
    each(axes, function(axis) {
        if (axis.visible) {
            axis.render();

        // Disable 'isDirty' flag for invisible axes
        } else {
            axis.isDirty = false;
        }
    });
}

实时演示:https://jsfiddle.net/BlackLabel/yb4qf1s6/