1
我試圖製作一個簡單的條形圖,每5秒更新一次使用highchart。下面是我的代碼:添加新列時的Highchart列動畫
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="underscore-min.js"></script>
</head>
<body>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
</body>
<script>
Highcharts.chart('container', {
chart: {
type: 'column'
},
title: {
text: 'Activity Count per Model'
},
xAxis: {
categories: [],
crosshair: true,
title: {
text: 'Model'
}
},
yAxis: {
min: 0,
title: {
text: 'Activity Count'
}
},
plotOptions: {
column: {
animation: true,
pointPadding: 0.2,
borderWidth: 0
}
},
series: [{
name: 'Count',
data: []
}]
});
setInterval(function(){
$.getJSON("http://localhost/getdata.php", function(data){
$('#container').highcharts().series[0].setData(data.value,true);
$('#container').highcharts().xAxis[0].setCategories(data.model);
});
}, 5000);
</script>
</html>
從JSON調用返回的數據:
{"model":["a","aa","aaa","aaaa","aab","b","c","d","e"],"value":[40,20,70,40,70,20,30,40,50]}
眼下功能的代碼工作正常(圖顯示了更新,每5秒的數據)。問題是,如果圖表更新爲新列,則沒有動畫。但是,如果現有數據在不添加新列的情況下更新,則其中有動畫(列成長/收縮,其他列調整如果軸更改)。如何在將新列插入圖表時啓用動畫?
在我看來,這種解決方案並沒有解決實際問題,這是不被動畫新的吧。這只是動畫新酒吧周圍的一切... – jlbriggs
要爲新酒吧設置動畫 - 需要一箇舊值,所以動畫有起點和終點 - 這是point.update()動畫需要的。在這種情況下,addPoint()動畫不會使點動畫,而是軸。無論如何,它仍然可以通過添加虛擬點來實現 - http://jsfiddle.net/Lqy2e42h/1/ – morganfree
有道理。如果圖表能夠處理爲新數據創建起點的邏輯,然後對其進行動畫處理,那麼會很好,但是添加虛擬點的解決方案是一個相當實用的解決方案。謝謝。 – jlbriggs