echarts异步画k线图折线图

一、效果图

echarts异步画k线图折线图

echarts异步画k线图折线图


二、代码

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head style="height: 100%">
 <script type="text/javascript" src="./js/echarts.min.js"></script>
 <!-- 引入jquery.js -->
 <script type="text/javascript" src="./js/jquery.js"></script>
<meta charset="utf-8"/>

</head>


<body>

  <!-- 准备Echarts图表画布 -->
        <div style="height:410px;min-height:100px;margin:0 auto;" id="main"></div>                        
        <script type="text/javascript">       
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));     
        // 画图表空出数据等待ajax传值
       myChart.setOption({
            title: {    //图表标题
                text: ''
            },
            tooltip: {
                trigger: 'axis', //坐标轴触发提示框,多用于柱状、折线图中        
               
                axisPointer: {
                type: 'cross'//十字指示              
                   
                }
            },  
            axisPointer: {   
                link: [{
                    xAxisIndex: [0, 1] //生成大十字轴,控制两个x轴
                }]
            },
            grid: [{        //图形间距
                left: '5%',
                right: 20,
                top: 40,
                height: 180
            }, {
                left: '5%',
                right: 20,
                height: 80,
                top: 260
            }],
         
            dataZoom: [   //滚动条      控制两条x轴                
                       {
                                type: 'inside',
                                top: '95%',
                                xAxisIndex:[0,1], 
                                height: 20,
                                start: 20,
                                end: 100
                        } ,
                        {
                               type: 'slider',
                                    xAxisIndex:[0,1],                                  
                                    start: 20,
                                    end: 100
                                } 
                 
            ],
            legend: {    //图表上方的类别显示               
                show:true,
                data:['现价','成交量']
            },
            color:[
                   '#FF3333',   
                   '#53FF53',    
                   '#B15BFF',   
                   '#68CFE8',   
                   '#FFDC35'   
                   ],
            toolbox: {    //工具栏显示             
                show: true,
                feature: {                
                    saveAsImage: {}        //显示“另存为图片”工具
                }
            },
            calculable : true,  


            xAxis: [{
                type: 'category',
                data: [],
                scale: true,
                boundaryGap: false,
                axisLine: { onZero: false },
                splitLine: { show: false },
                splitNumber: 20,
                min: 'dataMin',
                max: 'dataMax'
            },{
                type: 'category',
                scale: true,
                gridIndex:1,
                data: [] ,
                axisLabel: {show: false} 
            }
            ],
        
             yAxis : [ 
                        {                           
                        scale: true, //数据居中
                             splitArea: {
                                show: true
                              },
                              
                             type : 'value',
                             name : '现价',                           
                             splitNumber:10,//分行
                             axisLabel : {
                                 formatter: '{value}元'    //控制输出格式


                             }
                         },{   scale: true, //数据居中
                             splitArea: {
                                 show: true
                               },
                             gridIndex:1,
                             splitNumber: 2 ,
                             axisLine: {onZero: false},
                             axisTick: {show: false},
                             splitLine: {show: false},
                             axisLabel: {show: true} 
                         }
                     
            ], 
            series : [    //系列(内容)列表   
                          
                        {   
                            name:'现价',
                            type:'line',    //折线图表示
                            symbol:'emptycircle',    //设置折线图中表示每个坐标点的符号;emptycircle:空心圆;emptyrect:空心矩形;circle:实心圆;emptydiamond:菱形                        
                            data:[]        //数据值通过Ajax动态获取
                        },
                        {  
                            name:'成交量',
                            type:'bar',
                            xAxisIndex:1,
                            yAxisIndex:1,
                            barWidth: 10,
                            itemStyle: {
                                
                            },
                            symbol:'emptyrect',
                            data:[]
                        }
                       
            ]
        });
         
        myChart.showLoading();    //数据加载完之前先显示一段简单的loading动画
         
         var lastpx=[];        //现价数组
         var trade_vol=[];        //成交量数组
         var time=[];        //时间数组
         
         $.ajax({    //使用JQuery内置的Ajax方法
         type : "post",        //post请求方式
         async : true,        //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
         url : "tbl_market.do?method=getAll",    //请求发送到ShowInfoIndexServlet处
      //   data : {name:"A0001"},        //请求内包含一个key为name,value为A0001的参数;服务器接收到客户端请求时通过request.getParameter方法获取该参数值
         dataType : "json",        //返回数据形式为json
         success : function(result) {
             //请求成功时执行该函数内容,result即为服务器返回的json对象
             if (result != null && result.length > 0) {
                    for(var i=0;i<result.length;i++){       
                    lastpx.push(result[i].lastpx);        //挨个取出
                    trade_vol.push(result[i].trade_vol);                     
                    time.push(result[i].time);
                    }
                    myChart.hideLoading();    //隐藏加载动画
                    
                    myChart.setOption({        //载入数据
                     
                        xAxis: [{
                           
                        data: time    //填入X轴数据
                           
                        },{
                           
                        data: time    //填入X轴数据
                           
                        }],
                        series: [    //填入系列(内容)数据
                                      {
                                    // 根据名字对应到相应的系列
                                    name: '现价',
               
                                    data: lastpx
                                },
                                      {
                             
                                name: '成交量',                                                                
                                     data: trade_vol
                                }
                       ]
                    });
                    
             }
             else {
                 //返回的数据为空时显示提示信息
                 alert("图表请求数据为空,可能服务器暂未录入数据,您可以稍后再试!");
                   myChart.hideLoading();
             }
         
        },
         error : function(errorMsg) {
             //请求失败时执行该函数
             alert("图表请求数据失败,可能是服务器开小差了");
             myChart.hideLoading();        
         }
    }),


    myChart.setOption(option);    //载入图表 
  
        </script>
 
</body>
</html>