放大高图时,仅获取可见的x轴日期

时间:2014-12-03 16:57:36

标签: javascript jquery html highcharts

我有一个使用highcharts和ajax创建的相当复杂的图表,它包含堆叠列和使用日期时间xAxis的多个样条图。

我还从图表数据生成HTML数据表,该表根据用户选择事件重新生成,例如使用图例打开/关闭系列。这很好但我遇到的问题是当用户放大时收集正确的数据(它仍然从第一个日期到结束日期抓取所有数据)。

主要问题是我似乎无法找到一个变量,例如visible:true,以便区分循环期间当前视图中是否存在xAxis值。我查看了图表对象,包括系列,点等,但没有运气。

我也尝试过使用getExtremes但是这些值似乎与实际日期相差几千毫秒(明天我会再次研究这个方法)

下面是我在jQuery中构建HTML表以收集一些数据之前使用的一小段代码。

  $.each(chart.series, function (i, item) {
        //Generation Data
        if (item.name === "Generation") {
            generation.push(item.yData);
        }
        //Check if points are defined and then loop to get total circuit data
        if (typeof (item.points) !== "undefined") {
            $.each(item.points, function (j, point) {
                //Check if asset is visible
                if (point.series.visible === true) {
                    var type = point.series.options.type;
                    //Get only data that is a column (asset)
                    if (type !== "spline" || typeof (type) === "undefined") {
                        //Check if previous key exists already or not
                        if (typeof (totalCircuits[point.x]) === 'undefined') {
                            totalCircuits[point.x] = point.y;
                        }
                        else {
                            var oldVal = 0;
                            oldVal = totalCircuits[point.x];
                            var newVal = oldVal + point.y;
                            totalCircuits[point.x] = newVal;
                        }
                    }
                }

            });
        }
    });

希望至少能有所帮助,任何帮助或方向都会受到高度赞赏

1 个答案:

答案 0 :(得分:1)

如果在x轴上使用axis.getExtremes()函数,则应该能够在循环时检查x值,看它们是否在最小/最大x轴值内,从而确定是否它们在当前缩放级别可见。