<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 都按字符串解析,不识别变量.