天天看點

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>

繼續閱讀