背景: 我们在高库存图表中显示给用户的日内数据。我们只想在图表上从上午8点到下午4点30分显示“交易时间”,因此我们在图表上创建静态tickPositions(在这些时间内每2小时)。我们向用户显示2或5天的数据。我们将图表加载到当前日期/时间的所有数据并正确显示。
问题: 我们动态地将数据添加到图表中,但是当我们添加点时,在不是非常活跃的图表(每分钟没有刻度)上,图表数据会发生变化。我在视频中捕获了这个:
http://screencast.com/t/gPbrtpHHGN
你知道这会导致什么吗?在xAxis上,我们设置了min,max和tickPositions。我们还在几天之间为'divider'设置了plotLines。
我附上一个jsfiddle http://jsfiddle.net/jdrozd/t99Zk/来显示正在发生的事情。
如果单击“添加数据(+1分钟)”,它可以正常工作(常规数据间隔)。
如果单击“添加数据(+10分钟) - 错误”,则表示不符合预期(轮班 图)。
如果单击“添加数据(+10分钟) - 右”,则表现符合预期。为了实现这一点,我添加了“空”数据点以使数据“正常”。我想避免这样做。我认为定位滴答和添加数据会使数据正确排列。
这是添加插入空值的数据的代码:
function addDataFixed (delay) {
for(i=1; i<= delay;i++){
var val = null;
var minutesToAdd = maxMinutes + i;
if(i === delay){
val = getRandomArbitary(102.95,103.4);
}
var date = new Date(2013,1,11);
date.setHours(14);
date.setMinutes(minutesToAdd);
var pointData = [date.getTime(),val];
chart.series[0].addPoint(pointData,false);
}
chart.redraw();
maxMinutes += delay;
};
答案 0 :(得分:1)
在Highstock / Highcharts中,您不仅可以获取实际的分组数据并使用该选项设置数据 - 还需要很多自定义属性才能工作。您只需使用chart.series[0].options.data
获取所有积分,然后设置数据,请参阅:http://jsfiddle.net/t99Zk/9/
另一个解决方案是(如果你真的需要使用分组数据)循环遍历所有点,并创建新的x和y数组([x,y]或{x:x,y:y})。