0

背景:我们有在 highstock 图表中显示给用户的盘中数据。我们只想在图表上显示从上午 8 点到下午 4:30 的“交易时间”,因此我们在图表上创建静态分时仓位(在这些时间内每 2 小时)。我们向用户展示 2 天或 5 天的数据。我们使用截至当前日期/时间的所有数据加载图表,并且它可以正确显示。

问题:我们动态地将数据添加到图表中,但是在不是很活跃的图表上(不是每分钟都有刻度),当我们添加一个点时,图表数据会发生变化。我在视频中捕捉到了这一点:

http://screencast.com/t/gPbrtpHHGN

你知道这是什么原因造成的吗?在 xAxis 上,我们设置了最小值、最大值和刻度位置。我们还为天之间的“分隔线”设置了 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;                
};
4

1 回答 1

1

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

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

于 2013-02-12T12:29:45.687 回答