var dataset = [{ "time": [ "2017-07-12 15:08:05", "2017-07-12 15:08:10", "2017-07-12 15:08:15", "2017-07-12 15:08:20", "2017-07-12 15:08:25", "2017-07-12 15:08:30", "2017-07-12 15:08:35", "2017-07-12 15:08:40", "2017-07-12 15:08:45", "2017-07-12 15:08:50", "2017-07-12 15:08:55", "2017-07-12 15:09:00" ], "cpu": [ "50", "55", "40", "70", "80", "85", "47", "58", "47", "58", "47", "58" ], "memory": [ "47", "58", "96", "28", "25", "58", "47", "74", "52", "14", "25", "84" ], "network": [ "17", "04", "14", "47", "25", "14", "14", "25", "14", "82", "14", "42" ] }] var set = [{ "name": "cpu", "color": "#2E8CC4", "final_color": "blue", "chartPosition": "1", "min": "0", "max": "100", "unit": "%" }, { "name": "memory", "color": "#AF5DC6", "final_color": "purple", "chartPosition": "2", "min": "0", "max": "100", "unit": "%" }, { "name": "network", "color": "#9ACD76", "final_color": "green", "chartPosition": "3", "min": "0", "max": "100", "unit": "%" }] /** * 三层折线图 * param1 echarts的初始化id echarts.init(document.getElementById('xxx')) * param2 json数据 时间,数据集1,数据集2,数据集3 * param3 参数属性(name,color,final_color,chartPosition,min,max) json */ function Broken_line(id, dataset, param) { var color = "#9A9A9C"; //param 字体颜色 color var background = "#202624"; //背景 // var divwidth = document.getElementById(id).offsetWidth; //幕板宽 // var divheight = document.getElementById(id).offsetHeight; //幕板高 var divwidth = 200; var divheight = 400; // var size = $("#" + id).css('fontSize');//字体 var size = 16; var height = parseInt(size) + 10; //离顶部距离 var width = parseInt(size) * 2 + 2; //距离两边的距离 var spacing = (divheight - height) / 3.1 var Myecharts = "mycharts_" + id; // Myecharts = echarts.init(document.getElementById(id)); var count = dataset[0].time.length;//点数 var data = { time: [] }; for (var i = 0; i < param.length; i++) { data[param[i].name] = []; }//插入数据 //对数据处理,分别获取每个表格的数据最大值,最小值以及拥有的名字 var min_1 = ""; var min_2 = ""; var min_3 = ""; var name_1 = []; var name_2 = []; var name_3 = []; var interval_1 = ""; var interval_2 = ""; var interval_3 = ""; for (var i = 0; i < param.length; i++) { if (param[i].chartPosition == 1) { min_1 = param[i].min; interval_1 = param[i].max - param[i].min; name_1.push(param[i].name) } else if (param[i].chartPosition == 2) { min_2 = param[i].min; interval_2 = param[i].max - param[i].min; name_2.push(param[i].name) } else if (param[i].chartPosition == 3) { min_3 = param[i].min; interval_3 = param[i].max - param[i].min; name_3.push(param[i].name) } } //根据名字以及数据获得数据所占比例 function init(name, data) { for (var i = 0; i < name_1.length; i++) { if (name = name_1[i]) { return (data - min_1) / interval_1 * 100 } } for (var i = 0; i < name_2.length; i++) { if (name = name_2[i]) { return (data - min_2) / interval_2 * 100 } } for (var i = 0; i < name_3.length; i++) { if (name = name_3[i]) { return (data - min_3) / interval_3 * 100 } } } //插入数据 for (var i = 0; i < count; i++) { data.time.push([new Date(dataset[0].time[i]), new Date(dataset[0].time[i])]); for (var j = 0; j < param.length; j++) { data[param[j].name].push([new Date(dataset[0].time[i]), init(param[j].name, dataset[0][param[j].name][i])]); } } function makeXAxis(gridIndex, opt) { return echarts.util.merge({ type: 'time', gridIndex: gridIndex, axisLine: { onZero: false, lineStyle: { color: color } }, axisTick: { show: false }, axisLabel: { show: false, textStyle: { fontSize: parseInt(size), margin: 10 } }, //***************改****************************** splitLine: { show: false, lineStyle: { color: color } }, min: data.time[0][0], max: data.time[count - 1][0], axisPointer: { lineStyle: { color: 'transparent' } } }, opt || {}, true); } function makeYAxis(gridIndex, opt) { return echarts.util.merge({ type: 'value', gridIndex: gridIndex, nameLocation: 'middle', nameTextStyle: { color: color, //左图标的颜色 //fontSize: '30%' }, boundaryGap: false, axisTick: { show: false }, axisLine: { lineStyle: { color: color } }, //左边线条颜色 axisLabel: { show: true, // interval: '0', }, splitLine: { show: true, lineStyle: { color: color, width: 0.3 } }, position: 'right', min: 0, max: 100 }, opt || {}, true); } function makeGrid(top, opt) { return echarts.util.merge({ top: top, height: spacing, left: width, right: width }, opt || {}, true); } var serious = []; for (var i = 0; i < param.length; i++) { //for(var j = 1; j < 4; j++){ if (param[i].chartPosition == 1) { serious.push({ name: param[i].name, type: 'line', symbol: 'circle', symbolSize: 2, xAxisIndex: 3, yAxisIndex: 3, itemStyle: { normal: { color: param[i].color, borderWidth: 1 } }, data: data[param[i].name], areaStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: param[i].color }, { offset: 1, color: param[i].final_color }], false) } } }); } if (param[i].chartPosition == 2) { serious.push({ name: param[i].name, type: 'line', symbol: 'circle', symbolSize: 2, xAxisIndex: 1, yAxisIndex: 1, itemStyle: { normal: { color: param[i].color, borderWidth: 1 } }, data: data[param[i].name], areaStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: param[i].color }, { offset: 1, color: param[i].final_color }], false) } } }); } if (param[i].chartPosition == 3) { serious.push({ name: param[i].name, type: 'line', symbol: 'circle', symbolSize: 2, xAxisIndex: 2, yAxisIndex: 2, itemStyle: { normal: { color: param[i].color, borderWidth: 1 } }, data: data[param[i].name], areaStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: param[i].color }, { offset: 1, color: param[i].final_color }], false) } } }); } //} } option = { backgroundColor: background, tooltip: { trigger: 'axis', backgroundColor: '#fff', borderColor: 'rgba(0, 0, 200, 0.2)', borderWidth: 1, borderRadius: 0, padding: 1, formatter: function(params) { if (params.length) { params.unshift({ //seriesName: 'time', //value: [null, ""], //color: '#5193f2' }); return echarts.util.map(['cpu', 'memory', 'network'], function(seriesName) { for (var i = 0; i < params.length; i++) { var param = params[i]; var style = 'color: ' + param.color; if (param.seriesName === seriesName) { return '<span style="' + style + '">' + param.seriesName + ':</span><span style="' + style + '">' + param.value[1] + '</span>'; } } }).join('<br>'); } } }, axisPointer: { link: [{ xAxisIndex: 'all' }], snap: true }, grid: [ makeGrid(height), makeGrid(height + spacing), makeGrid(height + spacing * 2), makeGrid(height, { height: spacing }), makeGrid(height, { show: true, height: spacing * 3, borderColor: color, borderWidth: 1, z: 2 }) ], xAxis: [ makeXAxis(0), makeXAxis(1), makeXAxis(2), makeXAxis(3, { axisLine: { show: false } }), makeXAxis(4, { position: 'top', axisLine: { show: false, onZero: false }, splitLine: { show: true, lineStyle: { color: color, width: 0.3 } }, axisLabel: { show: true, textStyle: { color: color } }, axisPointer: { show: true, lineStyle: { color: '#478cf1', width: 0.5 } } }) ], yAxis: [ makeYAxis(0, { // name: param[0].name }), makeYAxis(1, { // name: param[1].name }), makeYAxis(2, { // name: param[2].name }), makeYAxis(3), makeYAxis(4) ], series: serious }; myChart.setOption(option) // 数据实时更新部分 // this.update_Broken_line = function(message) { // var name_set = []; // var sign = []; // for (var i = 0; i < message.length; i++) { // if (message[i].chartType == "line") { // name_set.push(message[i].chartName); // sign.push(i); // } // } // if (name_set.length != 0) { // data.time.splice(0, 1); // data.time.push([new Date(message[0].values[0].timeStamp), new Date(message[0].values[0].timeStamp)]); // for (var j = 0; j < param.length; j++) { // var isexist = 0; // var issign = ""; // data[param[j].name].splice(0, 1); // for (var i = 0; i < name_set.length; i++) { // if (param[j].name == name_set[i]) { // isexist = 1; // issign = i; // } // } // if (isexist == 1) { // data[param[j].name].push([new Date(message[0].values[0].timeStamp), init(param[j].name, message[issign].values[0].value)]); // } else { // data[param[j].name].push([new Date(message[0].values[0].timeStamp), data[param[j].name][data[param[j].name].length - 1][1]]); // } // } // } // serious_update = []; // for (var i = 0; i < param.length; i++) { // for (var j = 1; j < 4; j++) { // if (param[i].chartPosition == j) { // serious_update.push({ // name: param[i].name, // data: data[param[i].name] // }); // } // } // } // myChart.setOption({ // xAxis: [ // makeXAxis(0), // makeXAxis(1), // makeXAxis(2), // makeXAxis(3), // makeXAxis(4, { // axisLabel: { // show: true, // showMaxLabel: true, // showMinLabel: true, // textStyle: { // color: color // } // } // }) // ], // series: serious_update // }); // } } Broken_line("main", dataset, set)