背景:我们有在 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;
};