• Highcharts 的实际实践一


    题记:

    原先是想用chart.js 这个轻量级来完成我的需求的,结果基于我的数据不规则,所以实现不了.

    我的需求:

    XX后台系统会产生有些报警日志.

    我负责把这些数据按照图标的方式来展示.

    这写报警日志,基于时间和报警值来展示.

    时间不规则,而且要实时产生和更新我的图表.

    这些数据都存在于数据库中.

    好了.开始进入正题.

    1.首先下载两个js,一个是jquery,另外一个就是Highcharts

    下载的地址:

    http://www.hcharts.cn/product/download.php

    2.在你的页面中引入

    1 <script src="js/jquery.js"></script>
    2 <script src="js/highcharts.js"></script>
    3 <script src="js/exporting.js"></script>

    3. 建立一个DIV

    1 <div id="container"    style="min- 310px; height: 558px; margin: 0 auto"></div>

    4. 编写js,用js初始化

    当然在此之前,基于本土原因,加入了语言和时间设置

     1 Highcharts.setOptions({
     2         lang:{
     3            contextButtonTitle:"图表导出菜单",
     4            decimalPoint:".",
     5            downloadJPEG:"下载JPEG图片",
     6            downloadPDF:"下载PDF文件",
     7            downloadPNG:"下载PNG文件",
     8            downloadSVG:"下载SVG文件",
     9            drillUpText:"返回 {series.name}",
    10            loading:"加载中",
    11            months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],
    12            noData:"没有数据",
    13            numericSymbols: [ "千" , "兆" , "G" , "T" , "P" , "E"],
    14            printChart:"打印图表",
    15            resetZoom:"恢复缩放",
    16            resetZoomTitle:"恢复图表",
    17            shortMonths: [ "Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec"],
    18            thousandsSep:",",
    19            weekdays: ["星期一", "星期二", "星期三", "星期三", "星期四", "星期五", "星期六","星期天"]
    20         },
    21         global : {
    22             useUTC : false
    23         }
    24     });

    数据要从后台取,所以在初始化属性的时候,不加数据列

     1 var options = {
     2         chart: {
     3             renderTo:'container',
     4             type:'spline',
     5         },
     6         title: {
     7               text: '参数监控记录',
     8               x: -20 //center
     9           },
    10           xAxis:{
    11               type : 'datetime',
    12               title : {
    13                   text : "采集时间"
    14               },
    15               dateTimeLabelFormats: {
    16                   millisecond:"%M:%S.%L",
    17                   second:"%H:%M:%S",
    18                   minute:"%d %H:%M",
    19                   hour:", %m-%d %H",
    20                   day:"%Y-%m-%d,%A",
    21                   week:"%A",
    22                   month:"%Y-%M",
    23                   year:"%Y"
    24             },
    25             labels : {
    26                 enabled : true,
    27                 step : 2,
    28                 //formatter : function(){
    29                 //    return this.value;
    30                 //}
    31             }
    32           },
    33           yAxis: {
    34               title: {
    35                   text: '参数值'
    36               },
    37               plotLines: [{
    38                   value: 0,
    39                    1,
    40                   color: '#808080'
    41               }],
    42               min : 0,
    43               max : 100
    44           },
    45           series: [],
    46           tooltip: {
    47             headerFormat: '<b>{series.name}</b><br>',
    48             pointFormat: '{point.x:%y-%m-%d %H:%M:%S.%L} : {point.y:.2f}',
    49             crosshairs: [{
    50                  2,
    51                 color: 'green'
    52             }, {
    53                  2,
    54                 color: 'green'
    55             }],
    56             positioner: function() {
    57                 return {
    58                     x: 70,
    59                     y: 55
    60                 }
    61             }   
    62         },
    63 
    64         credits:{
    65             enabled:true, // 版权信息
    66             text:"XXXX有限公司",
    67             href:"<%=basePath%>" + "home.do"
    68         },
    69   
    70           plotOptions: {
    71             spline:{
    72                   dataLabels: {
    73                        enabled: true,
    74                        format : '{y:.2f}'
    75                 },
    76                 animation:false,
    77               },
    78         },
    79     };

    后台代码就是定时从后台取数据

     1 //初始函数,设置定时器,定时取数据
     2     $(function () {
     3     queryData(0);
     4    
     5        var i=0;
     6     var timer = setInterval(function(){
     7         i++;
     8         if(i>=3) {i=0;}
     9         queryData(i);
    10     },10000);
    11     
    12     //停止刷新
    13     $("button").click(function(){
    14         clearInterval(timer);
    15         });
    16     });
    17     
    18     var categories = [];
    19     var datas = [];
    20     
    21     //Ajax 获取数据并解析创建Highcharts图表
    22     function queryData(index) {
    23         $.ajax({
    24             url:"getmonitorparamgroup.do?index=" + index,
    25             type:'get',
    26             dataType:"json",
    27             success:function(data) {
    28                 
    29                 if (data ===  null) {
    30                     swal("无数据","","info");
    31                     return;
    32                 }
    33                 
    34                     //for(x in data){
    35                         //options.series[x].type = data[x].type;
    36                         //options.series[x].data = data[x].data;
    37                         options.series = data;
    38                     //}
    39                     
    40                     //$.each(data,function(i,n){
    41                     //    categories[i] = n[1];
    42                     //    datas[i] = n[2]*1;
    43                     //});
    44                     //options.xAxis.categories = categories;
    45                     //options.series[0].data = datas;
    46                     
    47                     chart = new Highcharts.Chart(options);
    48              }
    49         });
    50     }

    这是上面的前台代码.后台这接受请求.组建成一定的格式.把数据负责给series就好.

  • 相关阅读:
    js怎么通过逗号将string转换成数组
    设置mysql数据库为只读
    python 关于django 2.X from django.contrib.auth.views import login
    python Django2.X,报错 ‘learning_logs ’is not a registered namespace,如何解决?
    python django2.x报错No module named 'django.core.urlresolvers'
    python Django2.0如何配置urls文件
    VMware vSphere 组件和功能
    VMware vSphere Client的简单使用教程
    python 逻辑运算 ‘and’ ,'or' 在实战中的作用,代替if语句。
    python_urllib2:urlerror和httperror
  • 原文地址:https://www.cnblogs.com/SamRichard/p/5256762.html
Copyright © 2020-2023  润新知