<div id="myChart" :style="{width:'1800px', height: '500px'}" style="margin-top:10px;"></div> <script> import Vue from 'vue' import echarts from 'echarts' import apkCompile from '@/api/map/apkCompile.js' Vue.use(echarts) export default { data () { return { chartsObj: {}, // 配置項對象 defaultOption: { title: { text: '' }, tooltip: { trigger: 'axis' }, //x軸過長下拉滑動 dataZoom: { show: true, start: 30, end: 70, maxSpan: 80 // zoomLock: true }, //控制類目 legend: { data: [], selected: { } }, //整個echart圖在這個容器中的位置 grid: { left: '3%', right: '4%', bottom: '10%', containLabel: true }, toolbox: { }, //x軸 xAxis: [ { type: 'category', boundaryGap: false, data: [] } ], //~~~~y軸 yAxis: { name: '%(cpu)', type: 'value' }, series: [] } } }, mounted () { //初始化 this.drawECharts() }, methods: { drawECharts () { // 基於準備好的dom,初始化echarts實例 let myChart = echarts.init(document.getElementById('myChart')) //配置項加入 myChart.setOption(this.defaultOption) let params = { apk: 'http://172.22.14.138/output/android_packages_apps_SmartShot/LzE5e9K9c/SystemUI-ard9.0-system_app-2019_11_12_23_48_41-LzE5e9K9c-release.apk', scriptName: 'SmartShot_rom9.1_hd003' } this.$fetch(apkCompile.getCpuChats, params).then(res => { console.log(res.data) this.chartsObj = res.data this.chartsObj.series.forEach((item, index) => { //series中加上type this.chartsObj.series[index].type = 'line' }) //對象的結構賦值 let obj = { ...this.defaultOption } //把接口返回的值賦值給配置項 obj.legend.data = this.chartsObj.legend obj.xAxis[0].data = this.chartsObj.xaxis obj.series = this.chartsObj.series //從新初始化 myChart.setOption(obj) }) } } } </script>
下面部分參考連接:https://blog.csdn.net/suhui19...
https://www.cnblogs.com/hanle...html
設置x軸的名字傾斜vue
右傾android
xAxis: { type: 'category', boundaryGap: [0, 0.01], name: '投標人', data: [ '' ], axisLabel:{ interval:0,//橫軸信息所有顯示 rotate:-30,//-30度角傾斜顯示 } }, 左傾 axisLabel: { interval:0, rotate:40 }
interval
座標軸刻度標籤的顯示間隔(在類目軸中有效哦),默認會採用標籤不重疊的方式顯示標籤(也就是默認會將部分文字顯示不全)
能夠設置爲0強制顯示全部標籤,若是設置爲1,表示隔一個標籤顯示一個標籤,若是爲3,表示隔3個標籤顯示一個標籤,以此類推
rotate
標籤傾斜的角度,在類目軸的類目標籤顯示不全時能夠經過旋轉防止標籤重疊(官方這樣說的)旋轉的角度是-90到90度
問題又來了,這個名稱x軸的文字若是太長會受到遮擋,仍是顯示不全,這個時候能夠用grid屬性解決json
文字垂直顯示
axisLabel中使用formatter回調,formatter有兩個參數,使用方法是這樣的formatter:function(value,index){} ,value是類目,index 是類目索引。api
axisLabel: { interval: 0, formatter:function(value) { return value.split("").join("\n"); } }
文字豎直這個formatter實在有點太簡單化了,因此咱們來作一個兩個字的加n的換行。formatter以下:app
axisLabel: { interval: 0, formatter:function(value) { debugger var ret = "";//拼接加\n返回的類目項 var maxLength = 2;//每項顯示文字個數 var valLength = value.length;//X軸類目項的文字個數 var rowN = Math.ceil(valLength / maxLength); //類目項須要換行的行數 if (rowN > 1)//若是類目項的文字大於3, { for (var i = 0; i < rowN; i++) { var temp = "";//每次截取的字符串 var start = i * maxLength;//開始截取的位置 var end = start + maxLength;//結束截取的位置 //這裏也能夠加一個是不是最後一行的判斷,可是不加也沒有影響,那就不加吧 temp = value.substring(start, end) + "\n"; ret += temp; //憑藉最終的字符串 } return ret; } else { return value; } } }
X軸類目項隔一個換行(使用formatter中index參數)echarts
都是上面的第二種方法是利用formatter中的value參數實現了文字拼接\n換行的,可是index參數並無使用,如今咱們就一塊兒來使用這兩個參數實現隔一個類目項換行。dom
axisLabel: { interval: 0, formatter:function(value,index) { debugger if (index % 2 != 0) { return '\n\n' + value; } else { return value; } } }
須要對全部指標的圖例默認選中狀態只顯示前兩個,其餘指標的圖例狀態默認爲灰色。fetch
//圖例配置項 legend: { x: 'center', y: 'bottom', data: $scope.key_value, selected:{} }, //js動態加載 var selected_item = {}; for(i =0; i < $scope.key_value.length; i++){ var key_name = $scope.key_value[i]; if(i >1){ selected_item[key_name] = false; }else{ selected_item[key_name] = true; } }; option.legend.selected = selected_item; //原始寫法selected_item.key_name = false; 會報錯,緣由是: json 解析時 key_name 都按字符串解析,不識別變量.