我有一个使用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;
}
}
}
});
}
});
希望至少能有所帮助,任何帮助或方向都会受到高度赞赏
答案 0 :(得分:1)
如果在x轴上使用axis.getExtremes()函数,则应该能够在循环时检查x值,看它们是否在最小/最大x轴值内,从而确定是否它们在当前缩放级别可见。