hightcharts實時獲取數據動態曲線

利用highcharts生成動態曲線,實時獲取數據是一個問題,前幾天自己琢磨了以下,查看一些資料,最終結果如下,供大家參考。

首先js中,我們在highcharts官網獲取動態刷新源碼,我們在此基礎上進行修改,利用Ajax實時獲取數據,servlet處理返回json(需要添加jar包),生成動態曲線。

    <script>
        var xStr=<%= xstr%>;
        var yData=<%= dstr%>;
        var strtime="<%=time%>";
        var strtrainNum="<%=trainNum%>";
        var strfield="<%=field%>";
        var strcarriageNum="<%=carriageNum%>";
        $(function () {                                                                     
            $(document).ready(function() {                                                  
                Highcharts.setOptions({                                                     
                    global: {                                                               
                        useUTC: false                                                       
                    }                                                                       
                });                                                                         
                                                                                            
                var chart;              
                var i=0;                                                          
                $('#container').highcharts({                                                
                    chart: {                                                                
                        type: 'spline',                                                     
                        animation: Highcharts.svg, // don't animate in old IE               
                        marginRight: 10,                                                    
                        events: {                                                           
                            load: function() {                                              
                                                                                            
                                // set up the updating of the chart each second             
                                var series = this.series[0]; 

//主要修改以下代碼
                                setInterval(function() {
                                        var x,
                                            y,
                                            time;
                                            type=0;
                                            i=i+1;                        
                                           $.ajax({
                                          type: "post",
                                          url: "/crhmis/GetDataServlet?time="+strtime+"&trainNum="+strtrainNum+"&field="+strfield+"&carriageNum="+strcarriageNum+"&i="+i+"&type="+type+"",   
                                          dataType: "json",
                                          success : function(data){
                                               $(data).each(function(n,item){                                                   
                                                 x = item.time;
                                                 if(item.data!=null){
                                                     y = parseInt(item.data, 10);
                                                 }else{
                                                     y = null;
                                                 }
                                               })        
                                               series.addPoint([x, y], true, true);
                                          }
                                        });
                                }, 1000);                                                   
                            }                                                               
                        }                                                                   
                    },   
                                                                   
                    title: {                                                                
                        text: '<%= time%> 起近30分鐘數據動態曲線圖',
                        x: -20 //center                                         
                    },                                                                      
                    xAxis: {                                                                
                        categories: xStr,
                        labels:{
                            rotation:45
                         }                               
                    },                                                                      
                    yAxis: {
                        min: 0,                                                               
                        title: {                                                            
                            text: '值'                                                   
                        },                                                                  
                        plotLines: [{                                                       
                            value: 0,                                                       
                            width: 1,                                                       
                            color: '#808080'                                                
                        }]                                                                  
                    },                                                                      
                    tooltip: {      
                        formatter: function() {                                             
                            return '<b>'+ this.series.name +'</b><br/>';  
                         }                                                    
                    },                                                                      
                    legend: {                                                               
                        enabled: false                                                      
                    },                                                                      
                    exporting: {                                                            
                        enabled: false                                                      
                    },                                                                      
                    series: [{
                        name: '<%=name %>',
                        data: yData                                                               
                }]                                                                      
            });                                                                             
            });                                                                             
                                                                                            
        }); 

servlet中處理數據後傳出:

         List<Statistic> resultList =new ArrayList<Statistic>();

此處因需要而使用list,若動態刷新,每次只需要獲取一次數據,該數據類型應包含x軸數據,y軸數據。

        Gson gson=new Gson();
        String result = gson.toJson(resultList);
        PrintWriter out =response.getWriter();
        out.write(result);
        out.flush();
        out.close();


BY: 天有點涼 CSDN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章