亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

使用echart畫折線圖的經驗_1

2024-04-27 15:15:21
字體:
來源:轉載
供稿:網友
幾點經驗:1. 繪制函數一定要擴展性強,以適應多指標多圖表繪制。2. 可以按照中間95%范圍的數據樣本的值來設置Y軸刻度的最大最小值。最大最小值之外的值點還是會體現在數據中,其標識點則會畫在最上或最下的分割線上。3. axisLabel: {rotate: 45, interval:desc.xVals_intv}可以控制X軸坐標的角度和顯示間隔。4. 折線圖不能像scatter一樣,以[x,y]方式設置系列的值列表。所以,如果有某值系在某X位置沒有值,則其中值可以設置為'-'。此時,折線繪制到此[x,-]位置時,會斷掉,形成很多的斷裂的線段。4. echart在CPU很忙的時候,同時進行繪圖,很容易導致渲染失敗??梢园汛笠幠5臄祿嬎惴旁诶L圖前完成。避免繪圖與數據處理并行。//繪圖<script src="<%=path%>/resources/customJS/echarts-all.js"></script><script type="text/javascript">var lineChart=function (desc,filterval) { var myChart = echarts.init(document.getElementById(lineDivGet(desc.key))); var congesalg = "" if (typeof(filterval.congesalg) != "undefined"){ congesalg = filterval.congesalg; } var myoption = { title : { text: desc.seqNum + ". " + lineTitleGet(desc.key)+" ("+filterval.eNetType+" "+ congesalg + ")", subtext:"計算公式: " + lineSubtitleGet(desc.key), subtextStyle: { fontSize: 14, color: 'blue' //設置副標題顏色和大小 }, x:'center' }, tooltip : { show: true, trigger: 'axis', formatter: function(data){ //鼠標移到某有值點的X軸位置時,提示的信息。 var info = desc.xlabels[data[0].dataIndex]; for (var i = 0; i < data.length; i++){//data[i]是值點系列 if ("-" != data[i].value){//如果某系列在此X軸位置沒有值,則其值為'-' var tmp = data[i].seriesName.split(" "); info += "<br>" + tmp[0]+":" + data[i].value + desc.unit; } } return info; } }, legend: { orient: 'vertical', x:'left', data:desc.sName//賦值值點系列名 }, toolbox: { show: true, orient : 'vertical', x: 'right', y: 'center', feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, restore : {show: true}, saveAsImage : {show: true} } }, xAxis : [ { axisLabel: {rotate: 45, interval:desc.xVals_intv},//設置X坐標標識斜轉45度;并設置刻度生成的間隔,以避免刻度太多顯示難看 type : 'category', splitLine: {show: false},//不顯示X軸垂直的分割線 boundaryGap : false, data : desc.xVals }, ], yAxis : [ { type: 'value', min: desc.ymin, max: desc.ymax, splitNumber:desc.gripNum,//設置Y軸值最大最小值,以及分為幾個刻度。 axisLabel : { formatter: '{value} '+ desc.unit//設置Y軸刻度標識格式 } } ], series : [ { name: desc.sName[0], type: 'line', data: desc.yVals[0], itemStyle:{ emphasis:{label:{show:true}} }, markPoint : {//標識出最大最小值 data : [ {type : 'max', name: '最大值'}, {type : 'min', name: '最小值'} ] }, markLine : { data : [//畫平均值線 {type : 'average', name: '平均值'} ] } }, { name: desc.sName[1], type: 'line', data: desc.yVals[1], itemStyle:{ emphasis:{label:{show:true}} }, markPoint : { data : [ {type : 'max', name: '最大值'}, {type : 'min', name: '最小值'} ] }, markLine : { data : [ {type : 'average', name: '平均值'} ] } } ], }; myChart.setOption(myoption);}

“` //計算值點描述信息 var getLineDesc = function(key, items, filterval){ var xlabels = [] var xVals = [] var yVals = [] var yVals_S1 = [] var avg_S1 = 0 var num_S1 = 0 var avg_S2 = 0 var num_S2 = 0 var yVals_S2 = [] var xVals_num = 10

if (items.length > 0){ var xVals_intv = Math.ceil(items.length/xVals_num) var tag="" if (datafilter_nettype_slow == filterval.eNetType){ tag="2" } //區分值系列 for (var i = 0; i < items.length; i++){ var labelx = items[i].tvSec + "<br>" + "Addr:"+items[i].addr +"/"+ items[i].port + "<br>" + "周期:"+items[i].period +"&nbsp;&nbsp;" +" " + items[i].congesalg xlabels.push(labelx) xVals.push(items[i].tvSec.replace(" ","/n")) var yx = Math.floor((items[i][key+tag] * lineAjustGet(key))*100)/100; yVals.push(yx); if (0 != items[i].optimizing){ avg_S1 += yx; num_S1 ++; yVals_S1.push(yx); yVals_S2.push("-"); }else{ avg_S2 += yx; num_S2 ++; yVals_S1.push("-"); yVals_S2.push(yx); } } } var optPercent = "" var unit = lineUnitGet(key); if (num_S1 > 0){ avg_S1 = Math.floor((avg_S1/num_S1) *100)/100; }else{ avg_S1 = "-" } if (num_S2 > 0){ avg_S2 = Math.floor((avg_S2/num_S2) *100)/100; if (num_S1 > 0){ if ('%' == unit){ optPercent = "(" + Math.ceil((avg_S1 - avg_S2) *100)/100 + "%)"; }else{ optPercent = (((avg_S2 - avg_S1)*100)/avg_S2) optPercent = "(" + Math.ceil(optPercent *100)/100 + "%)"; } } }else{ avg_S2 = "-" } //計算Y周最大最小刻度,和設置的分割數 var defaultYGripNum = 4 var pickThreshold = 0.025 //use 95% data 2 caculate Y Scale Value var ySort = sortArray(yVals); var ymax = 0; var ymin = 0; if (0 != yVals.length) { var tag = Math.ceil(ySort.length * pickThreshold) ymin = ySort[tag]; tag = Math.ceil(ySort.length * ( 1 - pickThreshold)); if (tag >= ySort.length){ tag = ySort.length - 1; } ymax = ySort[tag]; var yIntvl = Math.ceil((ymax - ymin + 1)/(defaultYGripNum - 1)) ymin = ymin - Math.ceil(yIntvl/2) if (ymin < 0){ ymin = 0; }else{ ymin = Math.floor(ymin) } ymax = ymax + Math.ceil(yIntvl/2); ymax = ymin + Math.ceil((ymax - ymin)/defaultYGripNum)*defaultYGripNum; } //賦值出去 var desc = {}; desc.key = key; desc.xVals = xVals; desc.xlabels = xlabels; desc.xVals_intv = xVals_intv; desc.yVals = [yVals_S1, yVals_S2]; desc.ymax = ymax; desc.ymin = ymin; desc.unit = unit; desc.gripNum = defaultYGripNum; desc.sName = [datafilter_optimize_yes +" "+avg_S1+unit + optPercent, datafilter_optimize_no+" "+avg_S2+unit]; return desc;}

var allLineChartDo = function(filterval, items){//上層控制函數 if (0 == items.length){ return; }

var tag="" if (datafilter_nettype_slow == filterval.eNetType){ tag="2" } var lineDesc = []; var lineNum = 0; for (var i = 0; i < linelist_info.length; i++){ var key = linelist_info[i][LINE_INFO.KEY]; if (typeof(items[0][key+tag]) != "undefined"){ var desc = getLineDesc(key, items, filterval); desc.seqNum = lineNum + 1; lineDesc[lineNum++] = desc; } } for (var i = 0; i < lineDesc.length; i++){ lineChart(lineDesc[i], filterval) }}

“`


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
自拍偷拍亚洲精品| 午夜欧美不卡精品aaaaa| 性欧美暴力猛交69hd| 最近更新的2019中文字幕| 欧美亚洲另类制服自拍| 国产精品一区av| 久久久久久久久久av| 欧美精品在线看| 日本乱人伦a精品| 色偷偷偷综合中文字幕;dd| 欧美在线观看www| 国产精品一区二区久久国产| 久久久伊人日本| 国产精品香蕉在线观看| 国产精品免费久久久| 亚洲精品国产综合区久久久久久久| 国内精品免费午夜毛片| 久久精品国产99国产精品澳门| 欧美性视频网站| 亚洲国产婷婷香蕉久久久久久| 欧美午夜xxx| 欧美日本在线视频中文字字幕| 夜色77av精品影院| 亚洲一区美女视频在线观看免费| 国产精品va在线播放我和闺蜜| 亚洲欧美制服另类日韩| 亚洲色图在线观看| 久久人人爽人人爽人人片av高请| 欧美伦理91i| 国产精品一区二区三区久久久| 国内精品久久久久影院 日本资源| 亚洲国模精品私拍| 亚洲欧美日韩在线高清直播| 韩国精品美女www爽爽爽视频| 欧美成人在线免费视频| 综合136福利视频在线| 欧美巨乳美女视频| 成人精品一区二区三区| 精品中文字幕视频| 欧美肥老太性生活视频| 国产精品久久久久久久久男| 欧美国产日韩免费| 欧美激情a∨在线视频播放| 日韩电影中文 亚洲精品乱码| 欧美日韩国产123| 95av在线视频| 欧美日韩视频免费播放| 欧美黑人巨大精品一区二区| 日韩免费看的电影电视剧大全| 米奇精品一区二区三区在线观看| 精品久久久久久亚洲国产300| 久久久久国产精品免费| 久久精品久久精品亚洲人| 久久97久久97精品免视看| 欧美日韩性视频| 欧美色视频日本版| 97成人在线视频| 欧美人在线观看| 国产欧美久久一区二区| 午夜精品在线视频| 午夜精品久久久久久久白皮肤| 欧美最猛性xxxxx亚洲精品| 正在播放欧美视频| 亚洲福利在线视频| 欧美刺激性大交免费视频| 81精品国产乱码久久久久久| 欧美黑人国产人伦爽爽爽| 欧美日韩一区二区免费视频| 精品久久久免费| 一区二区成人av| 亚洲人成电影网站| 亚洲人成网站色ww在线| 欧美极品少妇xxxxⅹ免费视频| 欧美日韩成人免费| 午夜精品国产精品大乳美女| 4444欧美成人kkkk| 亚洲欧美国产日韩中文字幕| 日韩美女在线看| 久久久亚洲国产| 久久久久久97| 国产精品久久久久久av| 久久精品中文字幕一区| 成人观看高清在线观看免费| 久久躁狠狠躁夜夜爽| 亚洲国产另类 国产精品国产免费| 久久97久久97精品免视看| 日韩影视在线观看| 中文字幕日韩欧美精品在线观看| 亚洲天堂av在线播放| 91av在线播放视频| 亚洲性日韩精品一区二区| 清纯唯美亚洲综合| 成人福利视频在线观看| 亚洲高清色综合| 国产亚洲a∨片在线观看| 91极品视频在线| 亚洲自拍高清视频网站| 国产日产久久高清欧美一区| 久久久精品国产一区二区| 久热精品视频在线观看一区| 日韩女优在线播放| 欧美大尺度电影在线观看| 亚洲人成亚洲人成在线观看| 1769国内精品视频在线播放| 亚洲精品aⅴ中文字幕乱码| 奇米成人av国产一区二区三区| 4438全国亚洲精品在线观看视频| 日韩免费av一区二区| 最近2019中文字幕大全第二页| 亚洲最大的成人网| 欧洲一区二区视频| 黑丝美女久久久| 国产精品高清网站| 青青在线视频一区二区三区| 久久久久久成人精品| 久久久久久综合网天天| 欧美大尺度电影在线观看| 欧美一级高清免费| 日韩有码在线电影| 欧美怡春院一区二区三区| 亚洲精品日韩激情在线电影| 久久久国产精彩视频美女艺术照福利| 国外成人在线直播| 国产精品久久色| 国产欧美欧洲在线观看| 国产一区二区三区视频免费| 欧美在线观看网址综合| 97国产在线观看| 国产成人+综合亚洲+天堂| 亚洲摸下面视频| 91精品国产高清久久久久久91| 中文字幕亚洲欧美一区二区三区| 日韩中文字幕在线观看| 精品亚洲一区二区三区| 欧美美女操人视频| 成人精品视频99在线观看免费| 久久天天躁狠狠躁老女人| 成人黄色激情网| 欧美激情va永久在线播放| 久久久久久一区二区三区| 亚洲资源在线看| 狠狠操狠狠色综合网| 亚洲毛片在线观看.| 精品毛片网大全| 欧美一级大片在线观看| 中文字幕日韩欧美在线| 亚洲一区二区三区四区在线播放| 久久九九全国免费精品观看| 最好看的2019的中文字幕视频| 最近中文字幕2019免费| 欧美亚洲激情在线| 国产精品一区二区三区久久久| 欧美激情中文字幕乱码免费| 亚洲天堂视频在线观看| 成人免费看片视频| 欧美日韩国产二区| 欧洲精品在线视频| 美日韩精品免费观看视频| 欧美一区二区三区四区在线| 美日韩丰满少妇在线观看| 欧美成人精品h版在线观看| 中文字幕欧美视频在线| 国产一区二区三区丝袜| 美日韩精品视频免费看|