Echarts scatter 氣泡圖-獲取某時間段數據(氣泡大小半徑做了控制)


<script type="text/javascript" src="<%=basePath%>js/echarts/esl.js"></script>
<script type="text/javascript">

var today=new Date();
var currentDateStart = today.getFullYear()+"-"+ (today.getMonth()+1) +"-"+today.getDate()+' 00:00:00';
var currentDateEnd = today.getFullYear()+"-"+ (today.getMonth()+1) +"-"+today.getDate()+' 23:59:59';
 
$(document).ready(function(){

// 時間控件
$('#dtStart').datetimebox({ 
value: currentDateStart,    
editable:false,
  required: true,   
      showSeconds:false  
    });
$('#dtEnd').datetimebox({
value: currentDateEnd, 
editable:false, 
required: true,    
      showSeconds:false  
    });
    
    // 初始給氣泡麪板賦高度
    $('#mainScatter').panel({height:mainTableHeight(),width:mainTableWidth()});
    //$('#mainScatter').panel({height:openWindowHeight(0.87),width:openWindowWidth(0.97)});
    
});
// 執行查詢
function searchData(){
// 先校驗
var start = $('#dtStart').datetimebox('getValue');
var end = $('#dtEnd').datetimebox('getValue');
//alert(start + "-" +end );
var reg = /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/ ; 
if (reg.test(start) && reg.test(end)) {
// 後執行
getScaterData(start,end);
} else {
$.messager.alert('提示','時間格式中有非法字符,請重新選擇!','info');
}
}
//清空查詢條件
function clearForm(){


$('#dtStart').datetimebox('setValue',currentDateStart);
$('#dtEnd').datetimebox('setValue',currentDateEnd);
//$('#queryForm').form('clear');
}
 

// 使用echart start
var myScatter;
             
// 路徑配置
require.config({
    paths:{echarts:'./js/echarts/echarts',
    'echarts/chart/scatter' : './js/echarts/echarts',
    'echarts/chart/bar' : './js/echarts/echarts',
    'echarts/chart/line': './js/echarts/echarts'
    }
});
      
// 使用
require(
    [
        'echarts',
        'echarts/chart/scatter',//
        'echarts/chart/bar' // 使用柱狀圖就加載bar模塊,按需加載
    ],
    function (ec) {
  // 基於準備好的dom,初始化echarts圖表
        myScatter = ec.init(document.getElementById('mainScatter')); 


// 標準氣泡圖  三個值
var optionScatter2 = {
title : {
       text: '',
       subtext: '',
       x:'left',
       y:'top'
   },
   /*tooltip : {
       trigger: 'axis',
       showDelay : 0,
       axisPointer:{
           type : 'cross',
           lineStyle: {
               type : 'dashed',
               width : 1
           }
       }
   },*/
    tooltip : {
       trigger: 'item',//axis item
       formatter : function (value) {
           return value[0] +' ('  + '名稱:' + value[2][3] + ')<br/>'
                  + '成功率:' + value[2][0] + '(%)<br/> ' 
                  + '交易時長:' +parseFloat( value[2][1]) + '(秒)<br/>' 
                  + '交易量:' + value[2][2] + '(筆)<br/>' ; 
       }
   },
   
   legend: {
       data:['業務1']
   },
   toolbox: {
       show : true,
       feature : {
           mark : {show: true},
           dataZoom : {show: true},
           dataView : {show: true, readOnly: false},
           restore : {show: true},
           saveAsImage : {show: true}
       }
   },
   xAxis : [
       {
        name : '成功率(%)',
           type : 'value',
           power: 1,//整數精度
           //splitNumber: 4,//分割段數 默認5
           scale: true,//脫離0值比例,放大聚焦到最終_min,_max區間
           max:100,
           //min:90,
           axisLabel : {
               formatter: '{value} %'
           }
       }
   ],
   yAxis : [
       {
        name : '交易時長(s)',
           type : 'value',
           precision: 1,//小數精度
           power: 1,
           //max:2,
           splitNumber: 5,
           scale: true,
           axisLabel : {
               formatter: '{value} s'
           }
       }
   ],
   series : [
       {
           name:'業務1',
           type:'scatter',
           symbolSize: function (value){
            // 根據最大的交易量值 來控制氣泡半徑  (最小 3  最大 40)
               return Math.round(3 + value[2] * 40 / maxTotalCount);
           },
           data: [[0,0,0,'操作a']]//設置一個初始化值,設值爲0氣泡無大小不會顯示,就可以
           //itemStyle : { normal: {label : {show: true, position: 'top'}}}
       }
   ]
};


        // 爲echarts對象加載數據 
        myScatter.setOption(optionScatter2); 
        myScatter.hideLoading(); 
        }
);


// 記錄最大 的 交易量 值  初始設置爲1 不要爲 0
var maxTotalCount = 1;


// 執行獲取氣泡圖數據,並給圖賦值 
function getScaterData(date1,date2) {
    //獲得圖表的options對象  
    var options = myScatter.getOption();
    
    //var url = getKpiSerivceUrl()+'/service2/scatter.json?dt1='+date1+'&dt2='+date2;
    //var url = getKpiSerivceUrl()+'/service2/scatter.json?dt1=2014-06-24 00:00:00&dt2=2014-06-24 23:59:00';
    var url = '<%=basePath%>logMonitor/echarts.do?dt1='+date1+'&dt2='+date2;
    
    $.ajax({
type: 'get',
url : url,
beforeSend : function() {
$("body").mask("正在處理中...");
},
success : function(data) {
//alert(data);
$("body").unmask();
var data = $.parseJSON(data);//eval('(' + data + ')');// json 轉對象
var objs = data.kpis;

/**/
var arr = [];//格式如:[[20,2,306,'氣泡a'],[1,1,54,'氣泡b'],[71,5,3200,'氣泡c']];
for ( var i = 0; i < objs.length; i++) {
var success = objs[i].success;
var timeout = objs[i].timeout;
var totalcount = objs[i].total_count;
var objdesc = objs[i].object_desc;

// [成功率,時延,交易量,操作描述]
arr.push([ success,timeout,totalcount,objdesc]);

   // 獲取到最大的交易量值 來控制氣泡半徑
   if (parseInt(totalcount) >= maxTotalCount) {
    maxTotalCount = parseInt(totalcount);
   }
}
//options.legend.data[0] = "我是操作";//圖例賦值
//options.series[0].name = "我是操作";//圖例賦值
options.series[0].data = arr;//arr;
myScatter.hideLoading();
myScatter.setOption(options,false);//每次數據不合並,保證數據刷新


}
});
    
      
}


</script>
</head>
<style type="text/css">
    html, body{
        margin:0;padding:0;border:0;width:100%;height:100%;overflow:hidden;
    }    
</style>
<body class="easyui-layout" >
<div region="center" >
<div  style="padding: 20px;">

<form id="queryForm" style="margin: 10;">
<table id="t1">
<tr>
<td>
開始時間:
<input id="dtStart" type="text"></input>
結束時間:
<input id="dtEnd" type="text"></input>
<a href="javascript:void(0)" οnclick="searchData();"
class="easyui-linkbutton" iconCls="icon-search">加載</a>
<a href="javascript:void(0)" οnclick="clearForm();" 
class="easyui-linkbutton" iconCls="icon-cancel">重置</a>
</td>
</tr>
</table>
</form>
<br/>
<!-- 爲ECharts準備一個具備大小(寬高)的Dom height:400px;-->
<div id="mainScatter" class="easyui-panel" title="氣泡圖"  style="padding: 10; float: center;"></div>
</div>
</div>


以上是JSP中代碼,氣泡圖的數據這裏是從java後臺獲取json格式如下:

data->   {"kpis":[{"object_desc":"攜號轉網","success":"90","total_count":"1000","timeout":"0.99"}]}


界面如圖:



發佈了27 篇原創文章 · 獲贊 9 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章