Highcharts用來作為圖表數據的展示十分方便,效果也比較好。highcharts不僅可以實現死數據的展示,也能實現動態數據的實時添加顯示,類似財經股票的實時刷新效果,實現過程並不難,大致如下。
引用HighCharts 3.0后,可以對裝載Highcharts圖表的DIV容器加上一個方法highcharts(),該方法可以將圖表裝載到相應的容器中。js部分的代碼如下:
其中主要的方法包括
function loadMoreDataForNoiseChart(seriesObj) { var series = seriesObj[0]; var series1 = seriesObj[1]; chartsTime = setInterval(function () { count; var x = (newDate()).getTime()(8 * 60 * 60 * 1000); // 當前時間 var y; // 第一條線 y = Math.floor(Math.random() * 70); var newPoint; newPoint = { x: x, // current time y: y, marker: { symbol: 'url(../../../Content/images/warnning.png)' } }; series.addPoint(newPoint, false, true); //只有第一條線的 第二個參數設為false //第二條線 var y1; y1 = Math.floor(Math.random() * 70); var newPoint1; newPoint1 = { x: x, // current time y: y1 }; series1.addPoint(newPoint1, true, true); }, 1500); //1.5秒添加一次 }
getDataForNoiseMonitor()的具體實現如下:
//獲得前幾分鍾的數據,使效果看起來比較好 function getDataForNoiseMonitor() { var dataArr = []; var plotName = ['一米陽光', '千里走單騎']; for (var i = 0; i < myPlotName.length; i++) { var tempObj = { name: myPlotName[i], data: [] }; var time = (newDate()).getTime()(8 * 60 * 60 * 1000), j; //調整時間 for (j = -10; j <= 0; j++) { tempObj.data.push({ x: time + j * 3000, //前3分鍾的時間 y: Math.floor(Math.random() * 70) }); } dataArr.push(tempObj); } returndataArr; }
最后要說明的是,兩個方法有一個共同的地方,就是折線的條數要相同,上面的示例中為兩條。
效果如下: