我有一个带注释的时间线,我想实时更新(类似于Google 财经的做法)。但是,我无法让图表在添加数据时不闪烁也不重新缩放。
我无法让代码在 JSFiddle 中工作(我认为是因为带注释的时间线是基于 Flash 的?)但这里有一些基本代码,您可以将它们插入Google 的 Visualization Playground。你可以在这里看到一个保存的例子,但不幸的是不能修改代码,你必须去操场做那件事。
function drawVisualization() {
var data = new google.visualization.DataTable();
data.addColumn('date', 'Date');
data.addColumn('number', 'My Data');
data.addRows([
[new Date(2009, 1 ,1), 30000],
[new Date(2009, 1 ,2), 14045],
[new Date(2009, 1 ,3), 55022],
[new Date(2009, 1 ,4), 75284],
[new Date(2009, 1 ,5), 41476],
[new Date(2009, 1 ,6), 33322]
]);
var annotatedtimeline = new google.visualization.AnnotatedTimeLine(
document.getElementById('visualization'));
var options = {
'allowRedraw' : true ,
'displayAnnotations' : true,
'zoomStartTime': new Date(2009, 1 ,2),
'zoomEndTime': new Date(2009, 1 ,10)
};
annotatedtimeline.draw(data, options);
// let's add some more data in 3 seconds
setTimeout(function() {
again(annotatedtimeline, data, options);
}, 3000);
}
function again(timeline, data, options) {
data.addRow([new Date(2009, 1 ,7), 30000]);
timeline.draw(data, options);
}
google.setOnLoadCallback(drawVisualization);
奇怪的是,根据我设置 displayAnnotations 的方式,我会得到完全不同的闪烁行为
displayAnnotations = true
: 图表闪烁但不重新缩放
displayAnnotations = false
: 图表不闪烁但重新缩放到新数据(在操场上试试看)
无论如何设置allowRedraw = false
都会导致图表闪烁。知道如何不闪烁也不重新缩放吗?