将动态不规则数据添加到区域图表会导致它发生变化

时间:2013-02-11 21:42:40

标签: highstock

背景: 我们在高库存图表中显示给用户的日内数据。我们只想在图表上从上午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;                
};

1 个答案:

答案 0 :(得分:1)

在Highstock / Highcharts中,您不仅可以获取实际的分组数据并使用该选项设置数据 - 还需要很多自定义属性才能工作。您只需使用chart.series[0].options.data获取所有积分,然后设置数据,请参阅:http://jsfiddle.net/t99Zk/9/

另一个解决方案是(如果你真的需要使用分组数据)循环遍历所有点,并创建新的x和y数组([x,y]或{x:x,y:y})。