基于highcharts的带数据标签的折线图实现

最近的项目需要实现折线图和圆饼图,研究了highcharts一段时间后,成功的实现了这两个图的显示方法。本文只讨论折线图的实现方式。前端采用layui,jquery,html5等技术,后端采用ssm框架。本次只是演示,故后端只在controller层中添加假数据,并没有访问mybatis层。

现在开始贴代码:

<head>
   <meta charset="UTF-8">
   <title></title>
   <link rel="stylesheet" href="statics/layui/css/layui.css"  media="all">
   <script src="statics/layui/layui.js" type="text/javascript"></script>
   <!--Highcharts从4.2.0开始,已经不依赖jQuery,如果你的页面中不需要 jQuery,那么无需引入-->
   <script src="statics/Highcharts-4.2.6/js/highcharts.js"></script>
   <script src="statics/Highcharts-4.2.6/js/highcharts-more.js"></script>
   <script src="statics/Highcharts-4.2.6/js/modules/exporting.js"></script>
</head>
<body>
<div style="margin: 15px">
   <blockquote class="layui-elem-quote">
      <div class="layui-btn-group demoTable" style="float: left">
         <button class="layui-btn layui-btn-normal" data-type="importExcel" name="uploadExcel" id="uploadExcel" style="margin-left: 10px!important;">批量导入</button>
      </div>
      <div class="demoTable" style="float: right">
         搜索:
         <div class="layui-inline">
            <input class="layui-input" name="Name" id="demoReload" placeholder="请输入XXX" autocomplete="off">
         </div>
         <button class="layui-btn" data-type="reload"><i class="layui-icon">&#xe615;</i>搜索</button>
      </div>
      <div style="clear: both"></div>
   </blockquote>
</div>
<div id="container"  style="min-width:400px;height:400px"></div>

其中不要忘了导入相应的js文件,highcharts从4.2.0版本开始不再需要导入jquery。然后就是container容器,用来在之后存放折线图的。

下面是js部分

<script type="text/javascript">
   layui.use(['form','layer','layedit','laydate','upload','table'],function() {
      var form = layui.form;
      layer = parent.layer === undefined ? layui.layer : top.layer,
            laypage = layui.laypage,
            upload = layui.upload,
            layedit = layui.layedit,
            laydate = layui.laydate,
            $ = layui.jquery,
            table = layui.table;

      var myDate=new Date;//用来动态显示当前年份
      var zhexianData=[];//定义为数组类型,用来存放折线图的数据


      $(document).ready(function () {
         $.ajax({
            type: "GET",
            url: 'dataShow/queryZhexian',//提供数据的Servlet
            success: function (data) {
               //迭代,把异步获取的数据放到数组中
               $.each(data, function (i,d) {//遍历处理data,可以是数组、DOM、json等,取决于直接给定或者ajax返回的类型
                  zhexianData.push(d);
               });
               chart.series[0].setData(zhexianData);
            },
            error: function (e) {
               alert(e);
            }
         });
      });

      var chart = Highcharts.chart('container', {
         chart: {
            type: 'line'
         },
         title: {
            text: '每个月营业额'
         },
         subtitle: {
            text: '数据来源: WorldClimate.com'
         },
         xAxis: {
            categories: [ '八月', '九月', '十月', '十一月', '十二月','一月', '二月', '三月', '四月', '五月', '六月', '七月']
         },
         yAxis: {
            title: {
               text: '金额(元)'
            }
         },
         plotOptions: {
            line: {
               dataLabels: {
                  // 开启数据标签
                  enabled: true
               },
               // 关闭鼠标跟踪,对应的提示框、点击事件会失效
               enableMouseTracking: false
            }
         },
         series: [
            {
               name:myDate.getFullYear()+"年",//获取当前年份
               data:zhexianData               //数据部分
             }
         ]
      });
   });
</script>

下面是后端代码:

@RequestMapping(value="/queryZhexian",method = RequestMethod.GET)
@ResponseBody
public int [] queryZhexian(){//返回数组类型
    int [] z=new int [12];
    int turnover=0;
    int k=0;
    for(int i=0;i<12;i++){//产生假数据
        turnover+=5000;
        z[k++]=turnover;
    }
   return z;
}

 

最后是实现出来的结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值