這篇文章適合對highcharts已經有一定了解的猿友。
前兩天想用highcharts做一個時間圖,但是時間軸(x軸)的時間坐標並不是等間隔的,之前一直采用的方法是把時間做成等間隔的,然後沒有數據的時間點數據填充為null.這種策略顯然不好,LZ想從根本上解決這一問題,讓highcharts自己對時間進行處理,思路當然就是借助highcharts本身的機制.(版本:Highcharts-4.2.6)。
翻看highcharts api,xAxis部分的type屬性可取值有datetime,點擊查看 datetime with irregular intervals例子:
LZ按照這個例子整理了一個基於本地時間的散點圖:
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-1.8.2.js"></script> <script src="https://code.highcharts.com/highcharts.js"></script> <script type="text/javascript"> //數據 //1.數據格式是這樣的,一個時間和一個數據點放在一起。 //另外,時間以時間戳的形式展示,實際開發中時間往往是以yyyy-MM-dd hh:mi:ss格式存在數據庫中, //以java為例:從數據庫拿到java.util.Date後,直接調用getTime()方法即可。 var data = [[1478050088000,856], [1478050364000,781], [1478050786000,744], [1478050864000,732], [1478050775000,775], [1478050297000,785]]; $(function () { drawChart(); }); function drawChart(){ //2.highcharts默認使用utc時間格式,關閉utc,使用本地時間 Highcharts.setOptions({ global: { useUTC: false } }); var chartPic = new Highcharts.Chart({ colors: ["#01D26D"], chart: { renderTo: 'content', type: 'scatter', zoomType: 'xy', }, title: { text: '' }, subtitle: { text: '' }, exporting: { enabled:false//右上角打印等信息 }, credits:{ enabled:false //禁用版權信息 }, tooltip: { headerFormat: '<span>', pointFormat: '<table>'+ '<tr><td>' + '<td><b>{point.y:.0f}</b></td></tr>', footerFormat:'</table>', shared: true, useHTML: true, xDateFormat:'%Y-%m-%d %H:%M:%S ' }, //3.type:"datetime" xAxis: { type:"datetime", dateTimeLabelFormats: { millisecond: '%Y-%m-%d %H:%M:%S', second: '%Y-%m-%d %H:%M:%S', minute: '%Y-%m-%d %H:%M:%S', hour: '%Y-%m-%d %H:%M:%S', day: '%Y-%m-%d %H:%M:%S', month: '%Y-%m-%d %H:%M:%S', year: '%Y-%m-%d %H:%M:%S' } }, yAxis: { title: { text: 'yname' }, plotLines: [{ value: 0, width: 1, color: '#808080' }] }, legend: { layout: 'vertical', align: 'center', verticalAlign: 'bottom', borderWidth: 0 }, series: [{ name:'series', data:data }] }); } </script> </head> <body > <div id="content" ></div> </body> </html>
效果圖:
生平第一次寫博客,這樣講不知道大家能不能看懂。