const vw = (document.documentElement.clientWidth || document.body.clientWidth) / 100 // 随机数 const random = (val = 1) => { return Math.ceil(Math.random() * val) } // 水平圆角带背景柱状图 const horizontalRoundedBarChartWithBackground = function (data, id) { let charts = echarts.init(id); if (!data) { data = { yName: ["设备001", "设备001", "设备001", "设备001", "设备001"], xData: [53, 24, 66, 23, 100], xDataName: "达成率", } } let backGround = [] data.xData.forEach(() => { backGround.push(100) }) let option = { grid: { left: "0%", right: "12%", bottom: "0%", top: "0%", containLabel: true, }, tooltip: { trigger: "axis", axisPointer: { type: "none", }, textStyle:{ fontSize:0.8*vw }, formatter: function (params) { return ( params[0].name + "
" + "" + params[0].seriesName + " : " + params[0].value + '%' ); }, }, dataZoom: [], xAxis: { show: false, type: "value", }, yAxis: [ { type: "category", inverse: true, axisLabel: { show: true, textStyle: { color: "#fff", fontSize: 0.75 * vw }, }, splitLine: { show: false, }, axisTick: { show: false, }, axisLine: { show: false, }, data: data.yName, } ], series: [ { name: data.xDataName, type: "bar", zlevel: 1, itemStyle: { normal: { barBorderRadius: 30, color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ { offset: 0, color: "rgb(57,89,255,1)", }, { offset: 1, color: "rgb(46,200,207,1)", }, ]), }, }, barWidth: vw, data: data.xData, label: { show: true, position: "right", textStyle: { color: "#fff", fontSize: 0.75 * vw }, formatter:'{c}%' }, }, { name: "背景", type: "bar", barWidth: vw, barGap: "-100%", data: backGround, itemStyle: { normal: { color: "rgba(24,31,68,1)", barBorderRadius: 30, }, }, }, ], }; // if (data.xData?.length >= 3) { // option.dataZoom.push({ // show: true, // type: 'slider', // yAxisIndex: 0, // width: 0.75 * vw, // start: 0, // end: 1 / (data.xData.length / 4) * 100, // textStyle: { // fontSize: 0, // color: 'rgba(0,0,0,0)' // } // }) // } charts.setOption(option); $(window).resize(charts.resize); } // 柱状+折线图 const barChartAndLineChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ["1月", "2月", "3月", "4月", "5月", "6月", "7月"], yDataOne: [200, 382, 102, 267, 186, 315, 316], yDataOneName: "成品数量", yDataTwo: [382, 102, 186, 200, 102, 186, 315], yDataTwoName: "成品数量", } } let option = { tooltip: { textStyle:{ fontSize:0.8*vw } }, grid: { top: "15%", left: "1%", right: "1%", bottom: "8%", containLabel: true, }, legend: { show: false, itemGap: 50, data: ["注册总量", "最新注册量"], textStyle: { color: "#f9f9f9", borderColor: "#fff", }, }, dataZoom: [], xAxis: [ { type: "category", boundaryGap: true, axisLine: { show: true, lineStyle: { color: '#fff', opacity: 0.3, }, }, axisLabel: { //坐标轴刻度标签的相关设置 textStyle: { color: "#d1e6eb", margin: 15, fontSize: 0.75 * vw }, }, axisTick: { show: false, }, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#777777', opacity: 0.3, }, }, data: data.xName, }, ], yAxis: [ { type: "value", min: 0, // max: 140, splitNumber: 7, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#777777', opacity: 0.3, }, }, axisLine: { show: true, lineStyle: { color: '#fff', opacity: 0.3, }, }, axisLabel: { margin: 20, textStyle: { color: "#d1e6eb", fontSize: 0.75 * vw }, }, axisTick: { show: false, }, }, ], series: [ { name: data.yDataOneName || '', type: "line", // smooth: true, //是否平滑曲线显示 // symbol:'circle', // 默认是空心圆(中间是白色的),改成实心圆 showAllSymbol: true, symbol: "emptyCircle", symbolSize: 6, lineStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ { offset: 0, color: "#8fb9d7", }, { offset: 1, color: "#0F59E6", }, ]), }, borderColor: "#f0f", }, label: { show: true, position: "top", textStyle: { color: "#fff", fontSize: 0.75 * vw }, }, itemStyle: { normal: { color: "#A5DBF3", }, }, tooltip: { show: false }, areaStyle: { //区域填充样式 normal: { //线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。 color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "rgba(12,120,249,0.4)", }, { offset: 1, color: "rgba(0,0,0, 0)", }, ], false ), shadowColor: "rgba(53,142,215, 0.9)", //阴影颜色 shadowBlur: 20, //shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。 }, }, // data: data.yDataOne || [], }, { name: data.yDataTwoName, type: "bar", barWidth: vw, label: { show: false, position: "top", textStyle: { color: "#fff", }, }, itemStyle: { normal: { barBorderRadius: 5, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "#0CAFF6", }, { offset: 1, color: "#0F59E6", }, ]), }, }, data: data.yDataTwo, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 饼图 const pieChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = [ { value: 285, name: "类型1", }, { value: 410, name: "类型2", }, { value: 274, name: "类型3", }, { value: 235, name: "类型4", }, ] } let option = { tooltip: { trigger: "item", formatter: "{b} : {c} ({d}%)", textStyle:{ fontSize:0.8*vw } }, series: [ { name: "访问来源", type: "pie", radius: "90%", center: ["50%", "50%"], color: ["rgb(131,249,103)", "#FBFE27", "#FE5050", "#1DB7E5"], //'#FBFE27','rgb(11,228,96)','#FE5050' data: data.sort(function (a, b) { return a.value - b.value; }), roseType: "radius", label: { normal: { formatter: "{b|{b}} {c|{c}次}", rich: { c: { color: "rgb(241,246,104)", fontSize: 0.75 * vw, lineHeight: 5, }, b: { color: "rgb(98,137,169)", fontSize: 0.75 * vw, height: 1.5*vw, }, }, }, }, emphasis:{ label:{ fontSize:0.75 * vw } }, labelLine: { normal: { lineStyle: { color: "rgb(98,137,169)", }, smooth: true, length: 0, length2: 10, }, }, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 垂直柱状图 const verticalBarChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = [ { value: 285, name: "类型1", }, { value: 410, name: "类型2", }, { value: 274, name: "类型3", }, { value: 235, name: "类型4", }, ] } let option = { tooltip: { textStyle:{ fontSize:0.8*vw } }, grid: { top: "5%", left: "1%", right: "1%", bottom: "1%", containLabel: true, }, xAxis: { data: [ ">10分钟", "3-10分钟", "0-3分钟", ], axisLine: { lineStyle: { color: "#0177d4", }, }, axisLabel: { color: "#fff", fontSize: 0.8* vw, interval: 0, }, }, yAxis: { nameTextStyle: { color: "#fff", fontSize: 0.8*vw, }, axisLine: { lineStyle: { color: "#0177d4", }, }, axisLabel: { color: "#fff", fontSize: 0.8*vw, }, splitLine: { show: false, lineStyle: { color: "#0177d4", }, }, }, series: [ { type: "bar", barWidth: vw, itemStyle: { normal: { color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "#00b0ff", }, { offset: 0.8, color: "#7052f4", }, ], false ), }, }, data: [254, 3254, 1654], }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 水平圆角柱状图 const horizontalBarChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xData: [60, 132, 89, 134, 60], yData: ["制氢站1", "制氢站2", "制氢站3", "制氢站4", "制氢站5"], } } let colorArray = [ { top: "#ffa800", //黄 bottom: "#ffa800", }, { top: "#1ace4a", //绿 bottom: "#1ace4a", }, { top: "#4bf3ff", //蓝 bottom: "#4bf3ff", }, { top: "#4f9aff", //深蓝 bottom: "#4f9aff", }, { top: "#b250ff", //粉 bottom: "#b250ff", }, ]; let option = { tooltip: { show: true, formatter: "{b}:{c}", }, grid: { left: "5%", top: "2%", right: "1%", bottom: "8%", containLabel: true, }, dataZoom: [], xAxis: { interval: 0, type: "value", show: false, position: "top", axisTick: { show: false, }, axisLine: { show: false, lineStyle: { color: "#fff", }, }, splitLine: { show: false, }, }, yAxis: [ { interval: 0, type: "category", axisTick: { show: false, alignWithLabel: false, length: 5, }, splitLine: { //网格线 show: false, }, inverse: "true", //排序 axisLine: { show: false, lineStyle: { color: "#fff", }, }, data: data.yData, }, ], series: [ { name: "能耗值", type: "bar", label: { normal: { show: true, position: "right", formatter: "{c}", textStyle: { color: "white", //color of value }, }, }, itemStyle: { normal: { show: true, color: function (params) { let num = colorArray.length; return { type: "linear", colorStops: [ { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, ], //globalCoord: false }; }, barBorderRadius: 70, borderWidth: 0, borderColor: "#333", }, }, barGap: "0%", barCategoryGap: "50%", data: data.xData, }, ], }; if (data.yData?.length >= 3) { option.dataZoom.push({ show: true, type: 'slider', yAxisIndex: 0, width: 12, start: 0, end: 1 / (data.yData.length / 4) * 100, textStyle: { fontSize: 0, } }) } charts.setOption(option); $(window).resize(charts.resize); } // 水平直角柱状图 const horizontalBasisBarChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xData: [60, 132, 89, 134, 60], yData: ["设备1", "设备2", "设备3", "设备4", "设备5"], } } let colorArray = [ { top: "#ffa800", //黄 bottom: "rgba(11,42,84,0.6)", }, { top: "#1ace4a", //绿 bottom: "rgba(11,42,84, 0.6)", }, { top: "#4bf3ff", //蓝 bottom: "rgba(11,42,84,0.6)", }, { top: "#4f9aff", //深蓝 bottom: "rgba(11,42,84,0.6)", }, { top: "#b250ff", //粉 bottom: "rgba(11,42,84,0.6)", }, ]; let option = { tooltip: { show: true, formatter: "{b}:{c}", }, grid: { left: "5%", top: "2%", right: "3%", bottom: "8%", containLabel: true, }, dataZoom: [], xAxis: { type: "value", show: true, position: "bottom", axisLabel: { show: true, color: '#fff' }, axisLine: { show: true, lineStyle: { opacity: '.8' }, }, splitLine: { lineStyle: { type: 'dashed', color: "#fff", opacity: '0.4' }, show: true, }, }, yAxis: [ { axisLabel: { show: true, color: '#fff' }, type: "category", axisTick: { show: false, alignWithLabel: false, length: 5, }, splitLine: { //网格线 show: true, lineStyle: { type: 'dashed', color: "#fff", opacity: '0.4' }, }, inverse: "true", //排序 axisLine: { show: true, lineStyle: { // opacity: '.8' }, }, data: data.yData, }, ], series: [ { name: "能耗值", type: "bar", label: { normal: { show: true, position: "right", formatter: "{c}", textStyle: { color: "white", //color of value }, }, }, itemStyle: { normal: { show: true, color: function (params) { let num = colorArray.length; return { type: "linear", colorStops: [ { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, { offset: 0, color: colorArray[params.dataIndex % num].top, }, { offset: 1, color: colorArray[params.dataIndex % num].top, }, ], //globalCoord: false }; }, // barBorderRadius: 70, borderWidth: 0, borderColor: "#333", }, }, barGap: "0%", barCategoryGap: "50%", data: data.xData, }, ], }; if (data.xData?.length >= 3) { option.dataZoom.push({ show: true, type: 'slider', yAxisIndex: 0, width: 12, start: 0, end: 1 / (data.xData.length / 3) * 100, textStyle: { fontSize: 0, } }) } charts.setOption(option); $(window).resize(charts.resize); } const horizontalBarChartTwo = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xData: [239, 181, 154, 144, 135], yDataName: [ "设备1", "设备2", "设备3", "设备4", "设备5", ] } } let dataMax = []; //背景按最大值 for (let i = 0; i < data.xData.length; i++) { dataMax.push(Math.max.apply(null, data.xData)); } let option = { backgroundColor: "rgba(0,0,0,0)", grid: { left: "2%", right: "2%", bottom: "2%", top: "2%", containLabel: true, }, tooltip: { trigger: "axis", axisPointer: { type: "none", }, formatter: function (params) { return params[0].name + " : " + params[0].value; }, }, xAxis: { show: false, type: "value", }, yAxis: [ { type: "category", inverse: true, axisLabel: { show: true, textStyle: { color: "#fff", }, }, splitLine: { show: false, }, axisTick: { show: false, }, axisLine: { show: false, }, data: data.yDataName, }, { type: "category", inverse: true, axisTick: "none", axisLine: "none", show: true, axisLabel: { textStyle: { color: "#ffffff", fontSize: "12", }, }, data: data.xData, }, ], series: [ { name: "值", type: "bar", zlevel: 1, itemStyle: { normal: { barBorderRadius: 30, color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ { offset: 0, color: "rgb(57,89,255,1)", }, { offset: 1, color: "rgb(46,200,207,1)", }, ]), }, }, barWidth: vw, data: data.xData, }, { name: "背景", type: "bar", barWidth: vw, barGap: "-100%", data: dataMax, itemStyle: { normal: { color: "rgba(24,31,68,1)", barBorderRadius: 30, }, }, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } const horizontalBarChartThree = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xData: [60, 70, 80, 90, 60, 70, 80] } } let option = { grid: { left: "15%", right: "10%", bottom: "2%", top: "2%", }, xAxis: {}, yAxis: { data: ["设备1", "设备2", "设备3", "设备4", "设备5"], axisLabel: { margin: 30, } }, series: [ { name: "", type: "pictorialBar", symbolSize: [0.5 * vw, vw], symbolOffset: [5, 0], symbolPosition: "end", z: 12, label: { normal: { show: true, position: "right", formatter: "{c}%", }, }, data: data.xData, }, { name: "", type: "pictorialBar", symbolSize: [0.5 * vw, vw], symbolOffset: [0, 0], z: 12, data: data.xData, }, { type: "bar", itemStyle: { normal: { opacity: 3.7, }, }, barWidth: vw, data: data.xData, markLine: { silent: true, symbol: "none", label: { position: "middle", formatter: "{b}", }, data: [ { name: "目标值", yAxis: 70, lineStyle: { color: "#ffc832", }, label: { position: "end", formatter: "{b}\n {c}%", }, }, ], }, }, { type: "effectScatter", silent: true, tooltip: { show: false, }, zlevel: 3, symbolSize: 10, showEffectOn: "render", rippleEffect: { brushType: "stroke", color: "#3cefff", scale: 5, }, itemStyle: { color: "#3cefff", }, hoverAnimation: true, data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 格子水平柱状图 const gridHorizontalBasisBarChart = function (data, id) { let charts = echarts.init(id); let category = [ { name: "1", value: 300, color: '#65F210' }, { name: "2", value: 770, color: '#EFFC21' }, { name: "3", value: 810, color: '#23A6FC' }, { name: "4", value: 480, color: '#F3550E' }, ]; // 类别 if (!data) { data = []; category.forEach((value) => { data.push(value.value); }); } let option = { backgroundColor: "rgba(0,0,0,0)", xAxis: { splitLine: { show: false, }, axisLine: { show: false, }, axisLabel: { show: false, }, axisTick: { show: false, }, }, grid: { left: '20%', top: '0%', // 设置条形图的边距 right: '15%', bottom: '1%', }, yAxis: [ { type: "category", inverse: false, data: ["设备4#", "设备3#", "设备2#", '设备1#'], axisLine: { show: false, }, axisTick: { show: false, }, axisLabel: { verticalAlign: "bottom", align: "left", padding: [0, 0, 0, -60], textStyle: { fontSize: 14, color: "white", }, formatter(value, index) { return value; }, }, }, ], series: [ { // 30 count bar type: "pictorialBar", itemStyle: { normal: { color: "#07314a", }, }, symbolRepeat: "fixed", symbolMargin: 2, symbol: "roundRect", symbolClip: true, symbolSize: [5, 18], symbolPosition: "start", symbolOffset: [3, -4], symbolBoundingData: 1000, data: [1000, 1000, 1000, 1000], z: 2, animationEasing: "elasticOut", }, { // current count bar type: "pictorialBar", itemStyle: { normal: { color: function (val) { return category[val.dataIndex].color }, }, }, symbolRepeat: "fixed", symbolMargin: 2, symbol: "roundRect", symbolClip: true, symbolSize: [5, 18], symbolPosition: "start", symbolOffset: [3, -4], symbolBoundingData: 1000, data: data, z: 2, animationEasing: "elasticOut", }, { // label type: "pictorialBar", symbolBoundingData: 1000, itemStyle: { normal: { color: "none", }, }, label: { normal: { formatter: (params) => { var text; text = "{f| " + params.data + "kg}"; return text; }, rich: { f: { color: "#ffffff", }, }, position: "right", distance: 10, // 向右偏移位置 show: true, }, }, data: data, z: 0, }, { name: "外框", type: "bar", barGap: "-130%", // 设置外框粗细 data: [1000, 1000, 1000, 1000], barWidth: 45, itemStyle: { normal: { barBorderRadius: [5, 5, 5], color: "transparent", // 填充色 barBorderColor: "#1588D1", // 边框色 barBorderWidth: 0, // 边框宽度 }, }, z: 0, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 垂直柱状图 const verticalBarDiagram = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xData: ["01-01", "01-02", "01-03", "01-04", "01-05", "01-06", "01-07"], yDataOne: [320, 435, 490, 340, 320, 270, 360], yDataTwo: [490, 490, 490, 490, 490, 490, 490], yDataName: '故障率', } } let option = { backgroundColor: "rgba(0, 0, 0, 0)", tooltip: {}, grid: {top: "20%", left: "10%", right: "3%", bottom: "20%"}, // xAxis xAxis: { axisTick: {show: true}, axisLine: {lineStyle: {color: "rgba(255,255,255, .2)"}}, axisLabel: { textStyle: {fontSize: 12, color: "#fff"}, margin: 14, }, data: data.xData, }, // yAxis yAxis: [ { splitLine: {lineStyle: {color: "rgba(255,255,255, .05)"}}, axisLine: {show: false}, axisLabel: {textStyle: {fontSize: 16, color: "#fff"}}, }, ], // series series: [ { z: 3, name: "", type: "pictorialBar", symbolPosition: "end", data: data.yDataTwo, symbol: "diamond", symbolOffset: [0, "-50%"], symbolSize: [1.5 * vw, vw], itemStyle: { borderColor: "#083181", borderWidth: 2, color: "#083181", }, }, { z: 1, type: "bar", name: "", barGap: "-100%", barWidth: 1.5 * vw, data: data.yDataTwo, itemStyle: { borderColor: "#083181", borderWidth: 1, color: '#083181', }, }, { z: 2, name: "", type: "pictorialBar", data: [1, 1, 1, 1, 1, 1, 1, 1], symbol: "diamond", symbolOffset: [0, "50%"], symbolSize: [1.5 * vw, vw], itemStyle: { color: '#FC9402', }, }, { z: 3, name: "", type: "pictorialBar", symbolPosition: "end", data: data.yDataOne, symbol: "diamond", symbolOffset: [0, "-50%"], symbolSize: [1.5 * vw, vw], itemStyle: { borderColor: "#FE8F09", borderWidth: 2, color: "#FE8F09", }, }, { z: 1, stack: "总量", type: "bar", name: data.yDataName, barWidth: 1.5 * vw, // barGap: '-100%', data: data.yDataOne, itemStyle: { color: { type: "linear", x: 0, x2: 0, y: 0, y2: 1, colorStops: [ {offset: 0, color: "#FC2B10"}, {offset: 1, color: "#FD9603"}, ], }, }, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 堆叠柱状图 const stackBarDiagram = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xData: ["01-01", "01-02", "01-03", "01-04", "01-05", "01-06", "01-07"], yDataOne: [150, 320, 300, 210, 240, 180, 288], yDataTwo: [320, 435, 490, 340, 320, 270, 360], } } let option = { backgroundColor: "rgba(0, 0, 0, 0)", legend: { data: ["峰值发电速度", "平均发电速度", "完成率"], textStyle: {fontSize: 0.75 * vw, color: "#fff"}, top: "0", itemWidth: 1.25 * vw, itemHeight: vw, itemGap: 15, bottom: "5%", selectedMode: false, }, tooltip: {}, grid: {top: "15%", left: "15%", right: "3%", bottom: "15%"}, xAxis: { axisTick: {show: true}, axisLine: {lineStyle: {color: "rgba(255,255,255, .2)"}}, axisLabel: {textStyle: {fontSize: 12, color: "#fff"}}, data: data.xData, }, // yAxis yAxis: [ { splitLine: {lineStyle: {color: "rgba(255,255,255, .05)"}}, axisLine: {show: false}, axisLabel: {textStyle: {fontSize: 16, color: "#fff"}}, }, ], // series series: [ { z: 3, name: "", type: "pictorialBar", symbolPosition: "end", data: data.yDataTwo, symbol: "diamond", symbolOffset: [0, "-50%"], symbolSize: [1.5 * vw, vw], itemStyle: { borderColor: "#EB7B5C", borderWidth: 2, color: "#EB7B5C", }, }, { z: 1, type: "bar", name: "峰值发电速度", barGap: "-100%", barWidth: 1.5 * vw, data: data.yDataTwo, itemStyle: { borderColor: "#FA340C", borderWidth: 1, color: { type: "linear", x: 0, x2: 0, y: 0, y2: 1, colorStops: [ {offset: 0, color: "#FA340C"}, {offset: 1, color: "#FE8F05"}, ], }, }, }, { z: 2, name: "", type: "pictorialBar", data: [1, 1, 1, 1, 1, 1, 1, 1], symbol: "diamond", symbolOffset: [0, "50%"], symbolSize: [1.5 * vw, vw], itemStyle: { color: { type: "linear", x: 0, x2: 0, y: 0, y2: 1, colorStops: [ {offset: 0, color: "#65E683"}, {offset: 1, color: "#65E683"}, ], }, }, }, { z: 3, name: "", type: "pictorialBar", symbolPosition: "end", data: data.yDataOne, symbol: "diamond", symbolOffset: [0, "-50%"], symbolSize: [1.5 * vw, vw], itemStyle: { borderColor: "#FE8F09", borderWidth: 2, color: "#FE8F09", }, }, { z: 1, stack: "总量", type: "bar", name: "平均发电速度", barWidth: 1.5 * vw, // barGap: '-100%', data: data.yDataOne, itemStyle: { color: { type: "linear", x: 0, x2: 0, y: 0, y2: 1, colorStops: [ {offset: 0, color: "#4FD576"}, {offset: 1, color: "#4FD576"}, ], }, }, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 双向横向柱状图 const bidirectionalTransverseBarChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = { yName: ["充装站1", "充装站2", "充装站3", "充装站4"], xDataOne: [-65, -75, -55, -70], xDataOneName: "平均充装速度", xDataTwo: [25, 65, 80, 50], xDataTwoName: "峰值充装速度", } } let option = { backgroundColor: "rgba(0,0,0,0)", legend: { type: "scroll", // orient: "vartical", // x: "right", top: "0", // right: "center", // bottom: "0%", itemWidth: 0.75 * vw, itemHeight: 0.5 * vw, itemGap: 0.75 * vw, textStyle: { color: "#A3E2F4", fontWeight: 200, }, data: ["平均充装速度", "峰值充装速度"], }, grid: { left: "5%", top: "15%", right: "3%", bottom: "8%", containLabel: true, }, tooltip: {}, xAxis: [ { type: "value", splitNumber: 9, axisLine: { show: false, }, axisTick: { show: false, }, splitLine: { show: false, }, axisLabel: { color: "#96F5F6", fontSize: 8, // 将X轴上的负数取绝对值变正数 formatter(value) { return Math.abs(value); }, }, }, ], yAxis: [ { type: "category", data: data.yName, axisTick: { show: false, }, axisLine: { show: false, }, axisLabel: { color: "#96F5F6", fontSize: 8, }, }, ], series: [ { name: data.xDataOneName, type: "bar", data: data.xDataOne, stack: "总量", barWidth: vw, label: { show: true, position: "left", textStyle: { color: "#fff", }, formatter(value) { return 0 - value.data }, }, itemStyle: { normal: { color: new echarts.graphic.LinearGradient( 0, 0, 1, 0, [ { offset: 0, color: "#1F62F6", }, { offset: 0.8, color: "#01B9F3", }, ], false ), }, }, }, { name: data.xDataTwoName, type: "bar", barWidth: 2 * vw, data: data.xDataTwo, stack: "总量", label: { show: true, position: "right", textStyle: { color: "#fff", }, }, itemStyle: { normal: { color: new echarts.graphic.LinearGradient( 0, 0, 1, 0, [ { offset: 0, color: "#FF9300", }, { offset: 0.8, color: "#F84519", }, ], false ), }, }, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 多个垂直柱状图 const multipleVerticalBarChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: [ "7:00", "8:00", "9:00", "10:00", "11:00", "12:00", ], yDataOne: [4.9, 7.3, 9.2, 5.6, 7.7, 5.6], yDataOneName: "制氢", yDataTwo: [2.9, 5, 4.4, 2.7, 5.7, 4.6], yDataTwoName: "发电", yDataThree: [3.9, 6, 5.4, 3.7, 6.7, 5.6], yDataThreeName: "充装", } } let option = { tooltip: { //提示框组件 tooltip: { trigger: "axis", axisPointer: { lineStyle: { color: "#57617B", }, }, }, // trigger: "axis", // formatter: `{b}
{a0}: {c0}
{a1}: {c1}`, // axisPointer: { // type: "shadow", // label: { // backgroundColor: "#6a7985", // }, // }, // textStyle: { // color: "#fff", // fontStyle: "normal", // fontFamily: "微软雅黑", // fontSize: 12, // }, }, grid: { left: "1%", right: "4%", bottom: "0", top: 30, padding: "0 0 10 0", containLabel: true, }, legend: { //图例组件,颜色和名字 right: 10, top: 0, itemGap: 16, itemWidth: vw, itemHeight: 0.6 * vw, textStyle: { color: "#a8aab0", fontStyle: "normal", fontFamily: "微软雅黑", fontSize: 0.75 * vw, }, }, dataZoom: [], xAxis: [ { type: "category", boundaryGap: true, //坐标轴两边留白 data: data.xName, axisLabel: { show: true, color: '#fff' }, axisTick: { //坐标轴刻度相关设置。 show: false, }, axisLine: { //坐标轴轴线相关设置 lineStyle: { color: "#fff", opacity: 0.2, }, }, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#777777', opacity: 0.3, }, }, }, ], yAxis: [ { type: "value", splitNumber: 5, max:50, axisLabel: { show: true, color: '#fff' }, axisLine: { show: false, }, axisTick: { show: false, }, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#777777', opacity: 0.3, }, }, }, ], series: [ { name: data.yDataOneName, type: "bar", data: data.yDataOne, barWidth: 0.5 * vw, barGap: 0, //柱间距离 label: { //图形上的文本标签 normal: { show: true, position: "top", textStyle: { color: "#a8aab0", fontStyle: "normal", fontFamily: "微软雅黑", fontSize: 0.75 * vw, }, }, }, itemStyle: { //图形样式 normal: { barBorderRadius: [5, 5, 0, 0], color: "rgba(127, 128, 225, 0.7)" }, }, }, { name: data.yDataTwoName, type: "bar", data: data.yDataTwo, barWidth: 0.5 * vw, barGap: 0.5, //柱间距离 label: { //图形上的文本标签 normal: { show: true, position: "top", textStyle: { color: "#a8aab0", fontStyle: "normal", fontFamily: "微软雅黑", fontSize: 0.75 * vw, }, }, }, itemStyle: { //图形样式 normal: { barBorderRadius: [5, 5, 0, 0], color: "rgba(226, 99, 74, 0.7)", }, }, }, { name: data.yDataThreeName, type: "bar", data: data.yDataThree, barWidth: 0.5 * vw, barGap: 0.5, //柱间距离 label: { //图形上的文本标签 normal: { show: true, position: "top", textStyle: { color: "#a8aab0", fontStyle: "normal", fontFamily: "微软雅黑", fontSize: 0.75 * vw, }, }, }, itemStyle: { //图形样式 normal: { barBorderRadius: [5, 5, 0, 0], color: "rgba(26, 99, 74, 0.7)", }, }, }, ], }; if (data?.xName?.length >= 6) { option.dataZoom.push({ show: true, type: 'slider', bottom : '0%', xAxisIndex: 0, height: 12, start: 0, end: 1 / (data.xName.length / 6) * 100, textStyle: { fontSize: 0, color:'rgba(0,0,0,0)' } }) option.grid.bottom = '7%' } charts.setOption(option); $(window).resize(charts.resize); } const multipleVerticalBarChartTwo = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ['1月', '2月', '3月', '4月', '5月', '6月', '7月'], yDataOne: [22, 52, 55, 12, 35, 44, 66], yDataOneName: '平均制氢速度', yDataTwo: [32, 42, 50, 22, 30, 40, 52], yDataTwoName: "能耗比", } } let option = { legend: { data: ['平均制氢速度', '能耗比'], textStyle: {color: 'white'}, selectedMode: false, }, backgroundColor: 'rgba(0,0,0,0)', grid: { top: '20%', left: '5%', bottom: '5%', right: '5%', containLabel: true, }, tooltip: { trigger: 'item', }, animation: false, xAxis: [ { type: 'category', data: data.xName, axisTick: { alignWithLabel: true, }, axisLine: { show: false, }, axisLabel: { textStyle: { color: '#ddd', }, margin: 10, }, interval: 1, }, ], yAxis: [ { splitLine: { show: true, lineStyle: { type: 'dashed', color: '#727582', width: 1 } }, show: true, type: 'value', }, { show: true, type: "value", nameTextStyle: { color: "#ccc", }, axisLabel: { color: "#ccc", }, splitLine: { show: false, }, axisLine: { show: false, }, axisTick: { show: false, }, }, ], series: [ { name: '上部圆', type: 'pictorialBar', silent: true, symbolSize: [vw, 0.5 * vw], symbolOffset: [0, -6], symbolPosition: 'end', z: 12, // label: { // normal: { // show: true, // position: 'top', // padding: [0, 22, 0, 0], // fontSize: 15, // fontWeight: 'bold', // color: '#5BFCF4', // }, // }, color: '#09B18F', data: data.yDataOne, }, { name: '底部圆', type: 'pictorialBar', silent: true, symbolSize: [vw, 0.5 * vw], symbolOffset: [0, 7], z: 12, color: '#0CB69B', data: data.yDataOne, }, { name: data.yDataOneName, type: 'bar', barWidth: vw, barGap: '10%', // Make series be overlap barCateGoryGap: '10%', itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 0, 0, 0.7, [ { offset: 0, color: '#00FD8D', }, { offset: 1, color: '#0FB79D', }, ]), }, }, data: data.yDataOne, }, { name: data.yDataTwoName, type: "line", // smooth: true, //是否平滑曲线显示 // symbol:'circle', // 默认是空心圆(中间是白色的),改成实心圆 showAllSymbol: true, symbol: "emptyCircle", symbolSize: 6, yAxisIndex: 1, zlevel: 2, lineStyle: { normal: { color: "#28ffb3", // 线条颜色 }, borderColor: "#f0f", }, label: { show: true, position: "top", textStyle: { color: "#fff", }, }, itemStyle: { normal: { color: "#28ffb3", }, }, data: data.yDataTwo, }, ], }; if (data?.length >= 3) { option.dataZoom.push({ show: true, type: 'slider', xAxisIndex: 0, width: 12, start: 0, end: 1 / (data.length / 3) * 100, textStyle: { fontSize: 0, } }) } charts.setOption(option); $(window).resize(charts.resize); } // 多个温度计柱状图 const multipleThermometerBars = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ['01日', '02日', '03日', '04日', '05日', '06日', '07日'], yData: [52, 60, 22, 33, 44, 78, 59], } } let minArr = [] let maxArr = [] data.yData.forEach(val => { minArr.push(0) maxArr.push(Math.max.apply(null, data.yData)) }) let option = { backgroundColor: 'rgba(0,0,0,0)', tooltip: { trigger: 'axis', formatter: '{b0}: {c0}kw·h', }, grid: { top: '15%', left: '5%', right: '5%', bottom: '10%', containLabel: true, }, yAxis: { axisLine: { show: false, color: '#ffffff', }, axisLabel: { textStyle: { color: '#fff', fontSize: '14', }, }, axisTick: { show: true, lineStyle: { color: '#285abc', }, }, splitLine: { show: false, }, }, xAxis: [ { axisTick: 'none', axisLine: { show: false, }, data: data.xName, axisLabel: { margin: 20, show: true, textStyle: { color: '#fff', fontSize: '14', }, lineHeight: 16, }, }, { axisTick: { show: false, }, axisLine: { show: false, }, axisLabel: { show: false, textStyle: { color: '#fff', fontSize: '14', }, lineHeight: 16, }, data: [0, 0, 0, 0, 0, 0, 0], }, { axisTick: { show: false, }, axisLine: { show: false, }, axisLabel: { show: false, textStyle: { color: '#fff', fontSize: '14', }, lineHeight: 16, }, nameGap: '50', data: [], }, ], series: [ { name: '℃', type: 'bar', xAxisIndex: 0, data: data.yData, barWidth: 12, itemStyle: { normal: { color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [ { offset: 0, color: '#02F9FE', }, { offset: 1, color: '#ECF214', }, ]), }, }, z: 2, }, { name: '温度背景框', type: 'bar', xAxisIndex: 1, barGap: '-100%', data: maxArr, barWidth: 15, itemStyle: { normal: { color: '#0e2147', barBorderRadius: 5, }, }, z: 1, }, { name: '外框', type: 'bar', xAxisIndex: 2, barGap: '-100%', data: maxArr, barWidth: 17, itemStyle: { normal: { color: '#4577BA', barBorderRadius: 50, }, }, z: 0, }, { name: '外圆', type: 'scatter', hoverAnimation: false, data: minArr, xAxisIndex: 2, symbolSize: 15, itemStyle: { normal: { color: '#93FE94', opacity: 1, }, }, z: 2, }, { name: '白圆', type: 'scatter', hoverAnimation: false, data: minArr, xAxisIndex: 1, symbolSize: 20, itemStyle: { normal: { color: '#02F9FE', opacity: 1, }, }, z: 4, }, { name: '外圆', type: 'scatter', hoverAnimation: false, data: [0, 0, 0, 0, 0, 0, 0], xAxisIndex: 2, symbolSize: 23, itemStyle: { normal: { color: '#4577BA', opacity: 1, }, }, z: 0, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 单个渐变折线图(百分比) const singleGradientLineChart = function (data, id, param = {smooth: false, label: true}) { let charts = echarts.init(id); if (!data) { data = { xName: ["0", "4", "8", "12", "16", "20"], yData: ["40", "60", "22", "85", "50", "40"], } } let left = () => { if (vw < 10) return '20%' return '14%' } let option = { tooltip: { trigger: "axis", axisPointer: { lineStyle: { color: { type: "linear", x: 0, y: 0, x2: 0, y2: 1, colorStops: [ { offset: 0, color: "rgba(255,255,255,0)", // 0% 处的颜色 }, { offset: 0.5, color: "rgba(255,255,255,1)", // 50% 处的颜色 }, { offset: 1, color: "rgba(255,255,255,0)", // 100% 处的颜色 }, ], global: false, // 缺省为 false }, }, }, }, grid: { top: "10%", left: left(), right: "5%", bottom: "20%", // containLabel: true }, dataZoom: [], xAxis: [ { type: "category", boundaryGap: true, axisLine: { //坐标轴轴线相关设置。数学上的x轴 show: true, lineStyle: { color: 'color:"#092b5d"', }, }, axisLabel: { //坐标轴刻度标签的相关设置 textStyle: { color: "#24c4ff", margin: 15, }, formatter: function (data) { return data + "时"; }, }, axisTick: { show: false, }, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#777777', opacity: 0.3, }, }, data: data.xName, }, ], yAxis: [ { min: 0, max: 100, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#777777', opacity: 0.3, }, }, axisLine: { show: true, lineStyle: { color: "#777777", }, }, axisLabel: { show: true, textStyle: { color: "#24c4ff", }, formatter: function (value) { if (value === 0) { return value; } return value + "%"; }, }, axisTick: { show: false, }, }, ], series: [ { name: "注册总量", type: "line", smooth: param?.smooth, symbol: "circle", // 默认是空心圆(中间是白色的),改成实心圆 showAllSymbol: true, symbolSize: 8, lineStyle: { normal: { color: "#16C0A2", // 线条颜色 }, borderColor: "rgba(0,0,0,.4)", }, itemStyle: { color: "#16C0A2", borderColor: "#16C0A2", borderWidth: 2, }, label: { normal: { show: param?.label, position: "top", formatter: [" {a|{c}%}"].join(","), rich: { a: { color: "#fff", align: "center", }, }, }, }, tooltip: { show: true, }, areaStyle: { //区域填充样式 normal: { //线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。 color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "#16C0A2", }, { offset: 1, color: "rgba(124, 128, 244, 0)", }, ], false ), shadowColor: "rgba(53,142,215, 0.9)", //阴影颜色 shadowBlur: 20, //shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。 }, }, data: data.yData, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } const gradientLineChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = { XName: ["2016", "2017", "2018", "2019", "2020", "2021", "2022"], yDataName: "能耗", yData: [123, 154, 234, 321, 120, 390, 634] } } let img = "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE8AAABPCAYAAACqNJiGAAAACXBIWXMAAAsSAAALEgHS3X78AAAHaUlEQVR42u3cv29jWRUH8O+5P96zX5x4Mk4yjCW0S5QqZil2aIEUUG5BEQr4B2joKBclrhAF1HR0gNYVK6BapDSIyhSLnAKNxBSrLJOJd+L413vv3nsOhfNjMhmx4sfaSXSP5ESOrt/1++jcn+8qJCKI8d+FigQRL+JFvIgXI+JFvIgX8WJEvIgX8SJexIsR8SJexIt4MSJexIt4ES9GxPvfw9zGL0Ugev1vgtv3gJluw0NvApH8R+VvB+ZC8a6jCdpo096/Kd8GsIc9mfEtHnGBzXYG18b+OVgb2+gRABzgBQE7r5Q9wA7WZfuScB9tAIJ9AYiwIECz2GzbpyuwFm1ilQBgA63X+rwdAEeyCeAAkB30ziH3gXPARWTh3EfbWbaBgH0CerSOFnWxqjYAVUeqnqGpB58M9AquXoNPBvoZmrqOVG0AqotVtY4WAT0C9qkNkNz/Pu9iFN0/v/EWHQIqQZ9UqCeauaLJcWqWilM/WQYANhg9RCaFH6eMRNjYiUdfSjRkG2CgJ0BLZhkIzLMJzxHvzXAZnqn+p4mqVauZ1srQkvWToQqaisumGySVbJm1jJ0p82I09Z4bj0ue4G1eJOBc8drnfdw6WrQBqAxQyrtseuqcXSOVn5XarCilR6QUJTSFoyqssJQSasL+jLmykgR3Ilx9YC0bO5kAfAzwC/TkEC3Zw77MC28uA8bFIDEbVXfRxUeUICXlV7KCnE7XSraoatJsFKrKaa8ZOYEsseQiMJLCBKvHnECRWpuGIkCnHllizsbLKGgHuwIcvlLfFw84lwFDzn920CPgkKpoUgVGjYwt7bB05VCbwdhbu1QznBeJKJeI0kkKvAsy74J4k/MisUs1Mxh7Ww61scPSjYwtKzCqiiYBhzS7vkDuV59Hl6NrF6uqjlRNnqcme1TTFcC4cWmD8lYTrTNQBeSbAH4kKnzHQgsLmKGCFngv7DUbZ5cSlwN+8nwUskeFH6DgJ3jJV33fPcm8q6lui6qHTTJoUOVhsmRwqvJRoQ15ratWS8kjVvISwDcAfCxOJYWjhAW/gPAPAnNLWb1myOt8VGiDUzW7ToOqh006uDE/vON4Nxb524DBgKC9n5yR0kSqJK91EbSqsNYgI+zfh1bvV6W1rRMygHwM4LtKcx8+PC7Ja02kJmekoL03GBC2P39z4Q42W6LzqTEBUE+f9vVgqaHrad94W7MV5S1rlQjkHQJ9PQT+ncVXvpzxO78GqAbwP4fqL99nnLxMrSmdSEkipQpc5myccSM3KBq+Pu6Hra1GAMC4XP9+sTc3t2bb6cyWYdgCmo8BPGxgGQCRJYInQI4F8kMiTRV5+70ZHACoL2Wy/R6RphJMhEAET0SWljG7TvPx7LrX6rlPy7Pd3dZlFpSuXAL6GAKYYHKRn6ei6NvGBgHx8HryhjNtQkosH4nQV3H+uVmhPgIH/aZ67gneVTJsoSGDs0GJz4Daci5VsSIwIoUXC2ER4dz0PhRM/yBwf2WMfztO/vyhCKoE/BLMIjBSFSu15VzwGXDSP8EWGvKm+u70JJku53nAAYANAA8bSTk+sYYHSoL2LCKsErPlmQpA/Vzk5PfDyp9+AhcIVguXgWHtsYL6jVHsnMyQ1SCVwFbW1p0/BHCMq42sV+u9s5n36kx/tpV0JB51ebDG7OvCQYSdlEFAnwLCAD4goq+ReEeE71HgP2ptfkYsmyLhcYAOTsoQRNjXhR+sMXvUZRtHsoOevKneO9/ntc9/d7uAR19yV2YhSFJZtmE1q3rPeEGgfzC5D1JSPybhUin6FZH/lgZ+KmAP4NSx+NWs6ivLNoQgSe7KzKMv3e71eu7ZCmO2o3IAqA1AVYJPEymS3Cy5CgamGGljlNeOEh2I1wzUIw/+ewojUzixooOVMng2Ia0Fn6PuK35sS0rLXJviGOAdgOe5szKXzKNre8I9mXaPZFObAsZPyhfHnKHubc24JNNOc+GY/fOE8besogrNXIJDqblwSaadrRmXoe7LF8cM4yeb2hTT7vUmS/cr827u512scSswSrypWUUhPyt5okjVVyqkUF4aMBIZnOWSsXBlJVFeBNB+msPzzTXt/Pbz5tbn0St9X6cDDNGUAQrOn3p2lOYlTzFxpdcr1k0xclOYV14jp1esm7jSlzyF10uT/OkMboimdDpXfR3dvz7vZvZ1Oj3a3QW6WFVVNClBnwwaRGGYgNN0YMsJAFhPlUysgioK0cvlxRb8FEfyBC+507mYGM9/G37OD4AubmxfDndbArTkCV7yNsADFDxBj9/Sy7mzw7MMhc9QeGvykbPDs7f0cj5BjwcoeBu4bKqHC4JbQOa9noHnWYge7WL2vHbnfJrbxdFlmSdoymySPXt+2wGwe62Pmz/cAvHedMRi/xKrg5uL+xnWZVm5voJZzE0s/KzKTcTZu3a7TdibjTB7e3vy+nBwG86r0G367xafd+DnthzwuZV4dy3i4caIF/EiXsSLEfEiXsSLeDEiXsSLeBEv4sWIeBEv4kW8GBEv4kW8iBcj4v0f4l+bPQ5YnMn04QAAAABJRU5ErkJggg==" let color = "#00f8ff"; let option = { backgroundColor: "rgba(0,0,0,0)", grid: { left: "10%", top: "10%", bottom: "15%", right: "5%", }, legend: { type: "scroll", data: data.XName, itemWidth: 18, itemHeight: 12, textStyle: { color: "#00ffff", fontSize: 14, }, }, yAxis: [ { type: "value", position: "right", splitLine: { show: false, }, axisLine: { show: false, }, axisTick: { show: false, }, axisLabel: { show: false, }, }, { type: "value", position: "left", nameTextStyle: { color: "#00FFFF", }, splitLine: { lineStyle: { type: "dashed", color: "rgba(135,140,147,0.8)", }, }, axisLine: { show: false, }, axisTick: { show: false, }, axisLabel: { formatter: "{value}", color: "#fff", fontSize: 14, }, }, ], xAxis: [ { type: "category", axisTick: { show: false, }, axisLine: { show: false, lineStyle: { color: "#6A989E", }, }, axisLabel: { inside: false, textStyle: { color: "#fff", // x轴颜色 fontWeight: "normal", fontSize: "14", lineHeight: 22, }, }, data: data.XName, }, ], series: [{ symbolSize: 150, symbol: img, name: data.yDataName, type: "line", yAxisIndex: 1, data: data.yData, label: { show: true, position: "top", offset: [0, 60], textStyle: { color: "#fff", }, }, itemStyle: { normal: { borderWidth: 5, color: color, }, }, }], }; charts.setOption(option); $(window).resize(charts.resize); } const gradientLineChartTwo = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ['2021年1月', '2021年2月', '2021年3月', '2021年4月', '2021年5月'], yData: [2000, 1800, 2800, 900, 1600], } } let option = { backgroundColor: 'rgba(0,0,0,0)', grid: { top: '15%', bottom: '19%', left: '12%', right: '4%' }, tooltip: { trigger: 'axis', axisPointer: { type: 'line', lineStyle: { color: '#FF8736' }, } }, xAxis: { boundaryGap: true, // 默认,坐标轴留白策略 axisLine: { // 坐标轴轴线相关设置。数学上的x轴 show: true, lineStyle: { color: '#85B1B4' } }, axisLabel: { // 坐标轴刻度标签的相关设置 textStyle: { color: '#709FD9', margin: 15 } }, splitLine: { show: false }, axisTick: { show: false, alignWithLabel: true }, data: data.xName }, yAxis: { axisLine: { show: false, }, axisLabel: { // 坐标轴刻度标签的相关设置 show: true, textStyle: { color: '#709FD9', margin: 15 } }, splitLine: { show: false }, axisTick: { show: false } }, series: [ { type: 'scatter', symbolSize: 10, itemStyle: { color: '#FF8736' }, silent: true, tooltip: { show: false }, data: data.yData }, { type: 'line', symbol: 'circle', symbolSize: 20, symbol: 'path://M488 187.381L242.872 328.906a48 48 0 0 0-24 41.57v283.049a48 48 0 0 0 24 41.569L488 836.619a48 48 0 0 0 48 0l245.128-141.525a48 48 0 0 0 24-41.57V370.476a48 48 0 0 0-24-41.569L536 187.381a48 48 0 0 0-48 0z m32 27.713l245.128 141.525a16 16 0 0 1 8 13.856v283.05a16 16 0 0 1-8 13.856L520 808.906a16 16 0 0 1-16 0L258.872 667.381a16 16 0 0 1-8-13.856v-283.05a16 16 0 0 1 8-13.856L504 215.094a16 16 0 0 1 16 0z', lineStyle: { color: '#FF8736' }, itemStyle: { color: '#FF8736', borderWidth: 1, borderColor: '#FF8736' }, label: { show: true, position: 'top', textStyle: { color: '#fff' } }, data: data.yData } ] }; charts.setOption(option); $(window).resize(charts.resize); } const gradientLineChartThree = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ['2016', '2017', '2018', '2019', '2020', '2021', '2022'], yData: [52, 43, 60, 44, 79, 60, 40], yDataName: '合格率', } } let option = { backgroundColor: 'rgba(0,0,0,0)', tooltip: { trigger: 'axis', axisPointer: { type: 'none' }, formatter: (params) => { let html = params[0].name + '
' for (let i = 0; i < params.length; i++) { html += params[i].marker + params[i].seriesName + ': ' + params[i].value html += '%' + '
' } return html } }, grid: { left: '8%', right: '4%', top: '20%', bottom: '14%' }, xAxis: { type: 'category', axisLine: { lineStyle: { color: 'rgba(255, 255, 255, .2)' } }, splitLine: { show: false }, axisTick: { show: false }, splitArea: { show: false }, axisLabel: { fontSize: 12, padding: [3, 0, 0, 0], color: 'rgba(168, 177, 187, 1)' }, data: data.xName, }, yAxis: { nameTextStyle: { color: '#A8B1BB', fontSize: 12, padding: [0, 16, 0, 10] }, type: 'value', splitLine: { lineStyle: { type: 'solid', color: 'rgba(105, 171, 202, 0.08)' } }, axisLine: { show: false }, axisTick: { show: false }, axisLabel: { interval: 0, color: '#A8B1BB', fontSize: 12, formatter: '{value}' }, splitArea: { show: false } }, series: [ { name: data.yDataName, type: 'line', showAllSymbol: true, symbol: 'circle', symbolSize: 4, itemStyle: { color: '#3DF7E4', shadowColor: 'rgba(61, 247, 228, 0.46)', shadowBlur: 20, borderColor: 'rgba(61, 247, 228, 0.46)', borderWidth: 4 }, lineStyle: { width: 1, color: '#3DF7E4', shadowColor: 'rgba(61, 247, 228, 0.86)', shadowBlur: 20 }, data: data.yData } ] } charts.setOption(option); $(window).resize(charts.resize); } const gradientLineChartFour = function (data, id) { let charts = echarts.init(id); if (!data) { data = { yData: [10, 10, 30, 12, 15, 3, 7], xName: ['2016', '2017', '2018', '2019', '2020', '2021', '2022'], } } let option = { backgroundColor: 'rgba(0,0,0,0)', grid: { left: '8%', right: '4%', top: '10%', bottom: '10%' }, xAxis: [ { data: data.xName }, ], yAxis: [ { type: 'value', }, ], series: [ { type: 'line', data: data.yData, label: { show: true, position: 'top', textStyle: { color: '#fff' } }, lineStyle: { width: 2, shadowColor: 'rgba(158,135,255, 0.7)', shadowBlur: 3, shadowOffsetY: 5, }, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 渐变曲线图 const gradientCurve = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xData: ['00', '02', '04', '06', '08'], yData: [51, 30, 150, 130, 85], yName: '充装量', } } let option = { backgroundColor: 'rgba(0,0,0,0)', grid: { top: "20%", left: '16%', right: "5%", bottom: "20%", // containLabel: true }, xAxis: { data: data.xData, axisTick: { show: false }, axisLine: { show: true, lineStyle: { color: '#fff', width: 1 } }, axisLabel: { show: true, textStyle: { color: '#8587C1', fontSize: 16 } }, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#727582', width: 1 } }, }, yAxis: { axisLine: { show: true, lineStyle: { color: '#fff', width: 1 } }, color: '#8587C1', splitLine: { show: false }, axisLabel: { show: true, textStyle: { color: '#8587C1', fontSize: 16 } } }, tooltip: { trigger: 'axis', axisPointer: { type: 'line' }, }, series: [ { name: data.yName, type: 'line', symbol: 'circle', symbolSize: 10, smooth: true, data: data.yData, label: { show: true, position: "top", textStyle: { color: "#fff", }, }, itemStyle: { //拐点的样式 color: 'rgba(244,253,255,0)', borderWidth: 0, borderColor: 'rgba(87, 183, 242, 0)' }, lineStyle: { //线条的样式 width: 2, color: 'rgba(87, 183, 242, 1)' }, areaStyle: { color: { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [ { offset: 0, color: 'rgba(87, 183, 242, 1)' // 0% 处的颜色 }, { offset: 1, color: 'rgba(6,37,55,0)' // 100% 处的颜色 } ], global: false // 缺省为 false } } } ] } charts.setOption(option); $(window).resize(charts.resize); } // 绿色多边形柱状图 const greenPolygonalHistogram = (data, ids) => { let charts = echarts.init(ids); if (!data) { data = { xName: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], yData: [1, 2, 3, 4, 5, 4, 3, 2, 1, 4, 1, 3] } } const maxNum = Math.max(...data.yData) const maxArr = [] const minArr = [] data.yData.forEach(val => { maxArr.push(maxNum) minArr.push(1) }) let option = { color: [ "#68E683", "#58E28A", "#042A4F", "#042A4F", "#042A4F", "#6c93ee", "#a9abff", "#f7a23f", "#27bae7", "#ff6d9d", "#cb79ff", "#f95b5a", "#ccaf27", "#38b99c", "#93d0ff", "#bd74e0", "#fd77da", "#dea700", ], tooltip: { trigger: "axis", show: false, }, grid: { containLabel: true, left: '3%', right: '3%', bottom: '3%', top: '20%', }, dataZoom: [], xAxis: { axisLabel: { color: "#c0c3cd", fontSize: 14, interval: 2, }, axisTick: { lineStyle: { color: "#384267", }, show: false, }, splitLine: { show: false, }, axisLine: { lineStyle: { color: "#384267", width: 1, type: "line", }, show: true, }, data: data.xName, type: "category", }, yAxis: { show: true, axisLabel: { color: "#c0c3cd", fontSize: 14, }, axisTick: { lineStyle: { color: "#384267", width: 1, }, show: false, }, splitLine: { show: false, lineStyle: { color: "#384267", type: "dashed", }, }, axisLine: { lineStyle: { color: "#384267", width: 1, type: "line", }, show: true, }, name: "", }, series: [ { data: data.yData, type: "bar", barMaxWidth: vw, barWidth: vw, itemStyle: { color: { x: 0, y: 0, x2: 0, y2: 1, type: "linear", global: false, colorStops: [ { offset: 0, color: "#1FB55E", }, { offset: 1, color: "#68E683", }, ], }, }, label: { show: true, position: "top", distance: 10, color: "#fff", }, }, { data: minArr, type: "pictorialBar", barMaxWidth: vw, barWidth: vw, symbol: "diamond", symbolOffset: [0, "50%"], symbolSize: [vw, 8], }, { data: data.yData, type: "pictorialBar", barMaxWidth: vw, barWidth: vw, symbolPosition: "end", symbol: "diamond", symbolOffset: [0, "-50%"], symbolSize: [vw, 8], zlevel: 2, }, { data: maxArr, type: "bar", barMaxWidth: vw, barWidth: vw, barGap: "-100%", zlevel: -1, itemStyle: { color: '#083181', }, }, { data: minArr, type: "pictorialBar", barMaxWidth: vw, barWidth: vw, symbol: "diamond", symbolOffset: [0, "50%"], symbolSize: [vw, 8], zlevel: -2, }, { data: maxArr, type: "pictorialBar", barMaxWidth: vw, barWidth: vw, symbolPosition: "end", symbol: "diamond", symbolOffset: [0, "-50%"], symbolSize: [vw, 8], zlevel: -1, itemStyle: { color: '#083181', }, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 单个垂直柱状图 const singleVerticalBarChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ["1月", "2月", "3月", "4月", "5月", "6月", "7月"], yData: [12, 20, 11, 30, 14, 80, 50], } } let left = () => { if (vw < 10) return '18%' return '10%' } let option = { grid: { top: "10%", left: left(), right: "5%", bottom: "25%", // containLabel: true }, dataZoom: [], xAxis: { data: data.xName, axisLine: { lineStyle: { color: "#0177d4", }, }, axisLabel: { color: "#fff", fontSize: 14, }, }, yAxis: { nameTextStyle: { color: "#fff", fontSize: 16, }, axisLine: { lineStyle: { color: "#0177d4", }, }, axisLabel: { color: "#fff", fontSize: 16, }, splitLine: { show: false, lineStyle: { color: "#0177d4", }, }, }, series: [ { type: "bar", barWidth: 1 * vw, itemStyle: { normal: { color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "#00b0ff", }, { offset: 0.8, color: "#7052f4", }, ], false ), }, }, data: data.yData, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } const singleVerticalBarChartTwo = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], yData: [498, 520, 568, 432, 464, 332, 344, 458, 470, 468, 398, 310], yDataName: "设备在线率" } } let option = { backgroundColor: 'rgba(0,0,0,0)', animation: true, grid: { top: "15%", bottom: "15%", right: "5%" }, tooltip: { show: true, }, xAxis: { data: data.xName, axisLine: { show: false //隐藏X轴轴线 }, axisTick: { show: false //隐藏X轴轴线 }, splitLine: { show: true, lineStyle: { color: "rgba(77, 128, 254, 0.2)", width: 2 } }, axisLabel: { show: true, interval: 0, // margin: 14, fontSize: 13, textStyle: { color: "#a8d5ff" //X轴文字颜色 } } }, yAxis: [ { type: "value", gridIndex: 0, min: 0, //max: 100, interval: 100, // splitNumber: 4, splitLine: { show: true, lineStyle: { color: "rgba(77, 128, 254, 0.2)", width: 2 } }, axisTick: { show: false }, axisLine: { show: true, lineStyle: { color: "rgba(77, 128, 254, 0.2)" } }, axisLabel: { show: true, margin: 14, fontSize: 13, textStyle: { color: "#a8d5ff" } } } ], series: [ { name: data.yDataName, type: "bar", barWidth: vw, itemStyle: { normal: { label: { show: true, //开启显示 position: 'top', //在上方显示 textStyle: { //数值样式 color: '#fff', fontSize: 16 } }, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "rgba(146, 225, 255, 1)" }, { offset: 1, color: "rgba(0, 151, 251, 1)" } ]) } }, data: data.yData, z: 10, zlevel: 0 }, { // 分隔 type: "pictorialBar", itemStyle: { normal: { color: "#0F375F" } }, symbolRepeat: "fixed", symbolMargin: 6, symbol: "rect", symbolClip: true, symbolSize: [vw, 2], symbolPosition: "start", symbolOffset: [1, 1], data: data.yData, width: 2, z: 0, zlevel: 1 }, { name: "背影", type: "line", smooth: true, //平滑曲线显示 showAllSymbol: false, //显示所有图形。 symbolSize: 0, lineStyle: { width: 0 }, areaStyle: { color: "rgba(0, 151, 251, 0.1)" }, data: data.yData, z: 5 } ] } charts.setOption(option); $(window).resize(charts.resize); } const singleVerticalBarChartThree = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ['0时', '2时', '4时', '6时', '8时', '10时', '12时', '14时'], yData: [38, 60, 40, 55, 42, 39, 45, 40], } } let option = { backgroundColor: 'rgba(0,0,0,0)', color: ['#33a2fe', '#33a2fe', '#33a2fe', '#33a2fe', '#33a2fe'], grid: { top: "20%", bottom: "15%", right: "5%" }, xAxis: { nameTextStyle: { color: '#c0c3cd', padding: [0, 0, -10, 0], fontSize: 14, }, axisLabel: { color: '#c0c3cd', //X轴文字 fontSize: 14, interval: 0, }, axisTick: { lineStyle: { color: '#0B1535', width: 1, }, show: false, }, splitLine: { show: false, }, axisLine: { lineStyle: { color: '#384267', width: 1, type: 'dashed', }, show: true, }, data: data.xName, type: 'category', }, yAxis: { type: 'value', nameTextStyle: { color: '#c0c3cd', padding: [0, 0, -10, 0], fontSize: 14, }, axisLabel: { color: '#c0c3cd', //Y轴文字 fontSize: 14, }, axisTick: { lineStyle: { color: '#384267', width: 1, }, show: true, }, splitLine: { show: true, lineStyle: { color: '#384267', type: 'line', }, }, axisLine: { lineStyle: { color: '#fff', width: 1, type: 'line', }, show: false, }, }, series: [ { data: data.yData, type: 'bar', barMaxWidth: 'auto', barWidth: 1.5 * vw, label: { show: true, position: 'top', distance: 10, color: '#fff', }, }, { data: data.yData, type: 'pictorialBar', barMaxWidth: vw, symbolPosition: 'end', symbol: 'diamond', color: '#66c8ff', symbolOffset: [0 + '%', '-50%'], symbolSize: [1.5 * vw, 10], zlevel: 4, }, { data: [1, 1, 1, 1, 1, 1, 1, 1], type: 'pictorialBar', barMaxWidth: vw, symbolPosition: 'end', symbol: 'diamond', color: '#66c8ff', symbolOffset: [0 + '%', '-20%'], symbolSize: [1.5 * vw, 10], zlevel: 4, }], }; charts.setOption(option); $(window).resize(charts.resize); } // 多个渐变折线图(曲线) const multipleGradientLineChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ["13:00", "13:05", "13:10", "13:15", "13:20", "13:25", "13:30", "13:35", "13:40", "13:45", "13:50", "13:55"], yDataOne: [220, 182, 191, 134, 150, 120, 110, 125, 145, 122, 165, 122], yDataOneName: "充电", yDataTwo: [120, 110, 125, 145, 122, 165, 122, 220, 182, 191, 134, 150], yDataTwoName: "加氢", yDataThree: [220, 182, 125, 145, 122, 191, 134, 150, 120, 110, 165, 122], yDataThreeName: "加油", } } let option = { tooltip: { trigger: "axis", axisPointer: { lineStyle: { color: "#57617B", }, }, }, legend: { icon: "rect", itemWidth: 0.75 * vw, itemHeight: 0.25 * vw, itemGap: 0.75 * vw, data: ["加氢", "加油", "充电"], top: "4%", right: "4%", textStyle: { fontSize: 0.75 * vw, color: "#F1F1F3", }, }, grid: { top: "20%", left: "3%", right: "4%", bottom: "3%", containLabel: true, }, dataZoom: [], xAxis: [ { type: "category", boundaryGap: false, axisLabel: { show: true, color: '#fff' }, axisLine: { lineStyle: { color: "#57617B", }, }, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#777777', opacity: 0.3, }, }, data: data.xName } ], yAxis: [ { type: "value", axisTick: { show: false, }, axisLine: { lineStyle: { color: "#57617B", }, }, axisLabel: { show: true, color: '#fff' }, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#777777', opacity: 0.3, }, }, }, ], series: [ { name: data.yDataOneName, type: "line", smooth: true, symbol: "circle", symbolSize: 5, showSymbol: false, lineStyle: { normal: { width: 1, }, }, areaStyle: { normal: { color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "rgba(137, 189, 27, 1)", }, { offset: 0.8, color: "rgba(137, 189, 27, 0.6)", }, ], false ), shadowColor: "rgba(0, 0, 0, 0.1)", shadowBlur: 10, }, }, itemStyle: { normal: { color: "rgb(137,189,27)", borderColor: "rgba(137,189,2,0.27)", borderWidth: 12, }, }, data: data.yDataOne, }, { name: data.yDataTwoName, type: "line", smooth: true, symbol: "circle", symbolSize: 5, showSymbol: false, lineStyle: { normal: { width: 1, }, }, areaStyle: { normal: { color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "rgba(0, 136, 212, 0.5)", }, { offset: 0.8, color: "rgba(0, 136, 212, 0.2)", }, ], false ), shadowColor: "rgba(0, 0, 0, 0.1)", shadowBlur: 10, }, }, itemStyle: { normal: { color: "rgb(0,136,212)", borderColor: "rgba(0,136,212,0.2)", borderWidth: 12, }, }, data: data.yDataTwo, }, { name: data.yDataThreeName, type: "line", smooth: true, symbol: "circle", symbolSize: 5, showSymbol: false, lineStyle: { normal: { width: 1, }, }, areaStyle: { normal: { color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "rgba(219, 50, 51, 0.5)", }, { offset: 0.8, color: "rgba(219, 50, 51, 0.2)", }, ], false ), shadowColor: "rgba(0, 0, 0, 0.1)", shadowBlur: 10, }, }, itemStyle: { normal: { color: "rgb(219,50,51)", borderColor: "rgba(219,50,51,0.2)", borderWidth: 12, }, }, data: data.yDataThree, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 多个折线面积图(直线) const multipleBrokenLineAreaDiagram = (data, ids) => { let charts = echarts.init(ids); function Fun() { this.randomNum = function () { let arr = [] for (let i = 0; i < 12; i++) { arr.push(parseInt(Math.random() * 100)) } return arr } } if (!data) { data = { xData: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], yDataOne: new Fun().randomNum(), yDataTwo: new Fun().randomNum(), yDataThree: new Fun().randomNum(), yDataOneName: '制氢量', yDataTwoName: '发电量', yDataThreeName: '充装量', } } let option = { tooltip: { trigger: "axis", axisPointer: { lineStyle: { color: "#57617B", }, }, }, legend: { icon: "rect", itemWidth: 0.75 * vw, itemHeight: 0.25 * vw, itemGap: 0.75 * vw, data: [data.yDataOneName, data.yDataTwoName, data.yDataThreeName], left: "4%", textStyle: { fontSize: 0.75 * vw, color: "#F1F1F3", }, }, grid: { top: "20%", left: "3%", right: "4%", bottom: "3%", containLabel: true, }, dataZoom: [], xAxis: [ { type: "category", boundaryGap: false, axisLine: { lineStyle: { color: "#57617B", }, }, axisLabel: { show: true, color: '#fff' }, data: data.xData, }, ], yAxis: [ { type: "value", axisTick: { show: false, }, axisLine: { lineStyle: { color: "#57617B", }, }, axisLabel: { show: true, color: '#fff' }, splitLine: { show: false, lineStyle: { color: "#57617B", }, }, }, ], series: [ { name: data.yDataOneName, type: "line", smooth: false, lineStyle: { normal: { width: 1, }, }, areaStyle: { normal: { color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "rgba(137, 189, 27, 0.6)", }, { offset: 0.8, color: "rgba(137, 189, 27, 0.2)", }, ], false ), shadowColor: "rgba(0, 0, 0, 0.1)", shadowBlur: 10, }, }, itemStyle: { normal: { color: "rgb(137,189,27)", }, }, data: data.yDataOne, }, { name: data.yDataTwoName, type: "line", smooth: false, lineStyle: { normal: { width: 1, }, }, areaStyle: { normal: { color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "rgba(0, 136, 212, 0.6)", }, { offset: 0.8, color: "rgba(0, 136, 212, 0.2)", }, ], false ), shadowColor: "rgba(0, 0, 0, 0.1)", shadowBlur: 10, }, }, itemStyle: { normal: { color: "rgb(0,136,212)", }, }, data: data.yDataTwo, }, { name: data.yDataThreeName, type: "line", smooth: false, lineStyle: { normal: { width: 1, }, }, areaStyle: { normal: { color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "rgba(219, 50, 51, 0.6)", }, { offset: 0.8, color: "rgba(219, 50, 51, 0.2)", }, ], false ), shadowColor: "rgba(0, 0, 0, 0.1)", shadowBlur: 10, }, }, itemStyle: { normal: { color: "rgb(219,50,51)", }, }, data: data.yDataThree, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 空心饼图 const hollowPieChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = [ { value: 10, name: "加氢站1", }, { value: 5, name: "加氢站2", }, { value: 15, name: "加氢站3", }, { value: 25, name: "加氢站4", }, { value: 20, name: "加氢站5", }, { value: 35, name: "加氢站6", }, ] } let option = { color: ["#EAEA26", "#906BF9", "#FE5656", "#01E17E", "#3DD1F9", "#FFAD05"], grid: { left: -100, top: 50, bottom: 10, right: 10, containLabel: true, }, tooltip: { trigger: "item", formatter: "{b} : {c} ({d}%)", }, legend: { type: "scroll", orient: "vartical", // x: "right", top: "center", right: "15", // bottom: "0%", itemWidth: 0.75 * vw, itemHeight: 0.5 * vw, itemGap: 0.75 * vw, textStyle: { color: "#A3E2F4", fontSize: 123, fontWeight: 0, }, data: ["加氢站1", "加氢站2", "加氢站3", "加氢站4", "加氢站5", "加氢站6"], }, polar: {}, angleAxis: { interval: 1, type: "category", data: [], z: 10, axisLine: { show: false, lineStyle: { color: "#0B4A6B", width: 1, type: "solid", }, }, axisLabel: { interval: 0, show: true, color: "#0B4A6B", margin: 8, fontSize: 16, }, }, radiusAxis: { // min: 40, // max: 120, // interval: 20, axisLine: { show: false, lineStyle: { color: "#0B3E5E", width: 1, type: "solid", }, }, axisLabel: { formatter: "{value} %", show: false, padding: [0, 0, 20, 0], color: "#0B3E5E", fontSize: 16, }, splitLine: { lineStyle: { color: "#0B3E5E", width: 2, type: "solid", }, }, }, calculable: true, series: [ { type: "pie", radius: ["5%", "10%"], center: ["35%", "50%"], hoverAnimation: false, labelLine: { normal: { show: false, length: 3, length2: 5, }, emphasis: { show: false, }, }, data: [ { name: "", value: 0, itemStyle: { normal: { color: "#0B4A6B", }, }, }, ], }, { type: "pie", radius: ["90%", "95%"], center: ["35%", "50%"], hoverAnimation: false, labelLine: { normal: { show: false, length: 3, length2: 5, }, emphasis: { show: false, }, }, name: "", data: [ { name: "", value: 0, itemStyle: { normal: { color: "#0B4A6B", }, }, }, ], }, { stack: "a", type: "pie", radius: ["30%", "80%"], center: ["35%", "50%"], roseType: "area", zlevel: 10, label: { normal: { show: true, formatter: "{c}", textStyle: { fontSize: 12, }, position: "outside", }, emphasis: { show: true, }, }, labelLine: { normal: { show: true, length: 2, length2: 5, }, emphasis: { show: false, }, }, data: data, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 环形图 const doughnutChart = function (data, id) { let charts = echarts.init(id); let color = ['50,123,250', '244,201,7', '23,216,161', '122,60,235', '15,197,243'] if (!data) { data = [ { value: 335, name: "类目1", }, { value: 310, name: "类目2", }, { value: 234, name: "类目3", }, { value: 135, name: "类目4", }, { value: 1548, name: "类目5", } ] } data.forEach((val, index) => { console.log(index % color.length) val.itemStyle = { color: `rgba(${color[index % color.length]},0.7)`, borderColor: `rgba(${color[index % color.length]},1)`, borderWidth: 3, } }) let option = { backgroundColor: "rgba(0,0,0,0)", legend: { orient: "vertical", top: "center", right: "5%", data: ["类目1", "类目2", "类目3", "类目4", "类目5"], textStyle: { color: "#fff", fontSize: 0.75 * vw, }, }, series: [ { type: "pie", radius: ["40%", "85%"], center: ["40%", "50%"], avoidLabelOverlap: false, itemStyle: { normal: { color: "transparent", label: { formatter: '{d}%', show: true, position: "inner", rotate: "tangential", color: "#fff", fontSize: 0.75 * vw, }, }, }, labelLine: { normal: { show: false, }, }, data: data, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } const doughnutChartTwo = function (data, id) { let color = ['#0286ff', '#ffd302', '#fb5274'] if (!data) { data = { value: [ { value: 30, name: "光伏站1", itemStyle: { color: "#0286ff", opacity: 1, }, }, { value: 30, name: "光伏站2", itemStyle: { color: "#ffd302", opacity: 1, }, }, { value: 40, name: "光伏站3", itemStyle: { color: "#fb5274", opacity: 1, }, }, ], name: '能耗\n占比' } } data.value.forEach((val, index) => { val.itemStyle = { color: color[index % color.length], opacity: 1, } }) let dataTwo = data.value.map(val => { console.log(val) return { value: val.value, name: val.name, itemStyle: { color: val.itemStyle.color, opacity: 0.4, } } }) let index = -1 let charts = echarts.init(id); let option = { backgroundColor: "rgba(0,0,0,0)", legend: { orient: "vertical", show: true, right: "10%", y: "center", itemWidth: 0.5 * vw, itemHeight: 0.5 * vw, itemGap: 20, formatter: function (val) { index += 1 if (index >= data.value.length) { index = 0 } return `${val} ${data.value[index].value}%` }, textStyle: { color: "#7a8c9f", fontSize: 14, lineHeight: 20, rich: { percent: { color: "#fff", fontSize: 16, }, }, }, }, tooltip: { show: true, formatter: '{b},{c}%' }, series: [ { type: "pie", radius: ["65%", "75%"], center: ["25%", "50%"], hoverAnimation: false, z: 10, label: { position: "center", formatter: data.name, rich: { total: { fontSize: 30, color: "#fff", }, }, color: "#55BCFB", fontSize: 16, fontWeight: 800, lineHeight: 30, }, data: data.value, labelLine: { show: false, }, }, { name: 'value', type: "pie", radius: ["54%", "64%"], center: ["25%", "50%"], hoverAnimation: false, label: { show: false, }, data: dataTwo, labelLine: { show: false, }, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } const doughnutChartThree = function (data, id) { let charts = echarts.init(id); if (!data) { data = [ {name: "故障1", value: 1}, {name: "故障2", value: 2}, {name: "故障3", value: 3}, {name: "故障4", value: 7}, ]; } let nameArray = data.map((item) => { return ( item.name + "\t\t\t" + item.value + '次' ); }); let color = ["#2ca1ff", "#0adbfa", "#febe13", "#65e5dd"]; let list = []; for (let i = 0; i < data.length; i++) { list.push( { value: data[i].value, name: data[i].name + "\t\t\t" + data[i].value + '次', itemStyle: { normal: { borderWidth: 2, shadowBlur: 5, borderRadius: 5, borderColor: color[i % color.length], shadowColor: color[i % color.length], }, }, }, { value: 1, name: "", itemStyle: { normal: { label: { show: false, }, labelLine: { show: false, }, color: "rgba(0, 0, 0, 0)", borderColor: "rgba(0, 0, 0, 0)", borderWidth: 0, }, }, } ); } let option = { backgroundColor: "rgba(0,0,0,0)", color: color, tooltip: { show: true, formatter: function (val) { if (!val.data.name) return return val.data.name } }, grid: { left: "20%", top: "10%", }, legend: [ { icon: `path://M881.387 297.813c38.08 65.387 57.28 136.747 57.28 214.187s-19.094 148.8-57.28 214.187c-38.187 65.28-89.92 117.12-155.2 155.2S589.44 938.667 512 938.667s-148.8-19.094-214.187-57.28c-65.28-38.08-117.013-89.814-155.306-155.307C104.427 660.8 85.333 589.44 85.333 512c0-77.333 19.094-148.693 57.28-214.187 38.08-65.28 89.814-117.013 155.307-155.306C363.2 104.533 434.56 85.333 512 85.333c77.333 0 148.693 19.094 214.187 57.28 65.28 38.187 117.013 89.92 155.2 155.2z m-217.707-47.36C617.387 223.467 566.827 209.92 512 209.92s-105.387 13.547-151.68 40.533-82.987 63.68-109.973 109.974c-26.987 46.293-40.534 96.853-40.534 151.68s13.547 105.386 40.534 151.68c26.986 46.293 63.68 82.986 109.973 109.973 46.293 26.987 96.853 40.533 151.68 40.533s105.387-13.546 151.68-40.533c46.293-26.987 82.987-63.68 109.973-109.973 26.987-46.294 40.534-96.854 40.534-151.68s-13.547-105.387-40.534-151.68c-27.093-46.294-63.786-82.987-109.973-109.974z`, orient: "vertical", data: nameArray, right: "5%", top: "center", align: "left", itemGap: 5, textStyle: { color: "rgba(36, 173, 254, 1)", fontSize: "1rem", }, //图例标记的图形高度 itemHeight: 10, //图例标记的图形宽度 itemWidth: 10, }, ], toolbox: { show: false, }, series: [ { name: "", type: "pie", clockWise: false, radius: ["120%", "140%"], width: "55%", height: "55%", hoverAnimation: false, center: ["50%", "50%"], top: "center", itemStyle: { normal: { label: { show: false, }, }, }, data: list, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 百分比柱状图 const PercentageBarChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = { value: [20, 30, 40, 50, 60, 70, 80, 90], xValue: ["设备1", "设备2", "设备3", "设备4", "设备5", "设备6", "设备7", "设备8"], threshold: 70 } } const value = data.value const xValue = data.xValue const threshold = data.threshold const isWarning = data.value.map(val => { return val > threshold }) let option = { tooltip: { trigger: "item", borderColor: "rgba(89,211,255,1)", borderWidth: 2, padding: 5, textStyle: { color: "rgba(89,211,255,1)", fontSize: vw, width: 300, height: 40, }, formatter: "{c}" + "%", extraCssText: "box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);", // 自定义的 CSS 样式 }, grid: { bottom: "20%", top: "35%", left: "1%", right: "1%", }, dataZoom: [], xAxis: { data: xValue, axisTick: { show: false, }, axisLine: { show: false, }, axisLabel: { show: true, textStyle: { color: "#fff", }, margin: 12, //刻度标签与轴线之间的距离。 }, }, yAxis: { splitLine: { show: false, }, axisTick: { show: false, }, axisLine: { show: false, }, axisLabel: { show: false, }, }, series: [ // 头 { name: "", type: "pictorialBar", symbolSize: [1.5 * vw, 0.8 * vw], symbolOffset: [0, -5], z: 12, itemStyle: { normal: { color: function (val) { if (isWarning[val.dataIndex]) { return "#C73536" } else { return "#0057A3" } } }, }, data: value.map(val => { return { name: "", value: 100, symbolPosition: "end", } }) }, //底部立体柱 { name: "vvvv", stack: "1", type: "bar", // label: { // show: true, // position: 'top', //top / left / right / bottom / inside / insideLeft / insideRight / insideTop / insideBottom / insideTopLeft / insideBottomLeft / insideTopRight / insideBottomRight // distance: 15, // color: "#FFFE00", // fontSize: 30, // formatter: '{c}' + '%' // }, silent: true, barWidth: 1.5 * vw, barGap: "-100%", // Make series be overlap data: value, itemStyle: { normal: { color: function (val) { if (isWarning[val.dataIndex]) { return { x: 0, y: 0, x2: 0, y2: 1, type: "linear", global: false, colorStops: [ { //第一节下面 offset: 0, color: "#FE1006", }, { offset: 1, color: "#FE7917", }, ], } } else { return { x: 0, y: 0, x2: 0, y2: 1, type: "linear", global: false, colorStops: [ { //第一节下面 offset: 0, color: "#0968FC", }, { offset: 1, color: "#15A1FF", }, ], } } } }, }, }, //三个最底下的圆片 { name: "", type: "pictorialBar", symbolSize: [1.5 * vw, 0.8 * vw], symbolOffset: [0, 4], z: 12, itemStyle: { normal: { color: function (val) { if (isWarning[val.dataIndex]) { return '#CC0809' } else { return '#086ACB' } } }, }, data: value.map(val => { return { name: "", value: "100", } }) }, // 中间圆片 { name: "", type: "pictorialBar", symbolSize: [1.5 * vw, 0.8 * vw], symbolOffset: [0, -5], itemStyle: { normal: { color: function (val) { if (isWarning[val.dataIndex]) { return new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "#FB130A", }, { offset: 1, color: "#FE843A", }, ], false ) } else { return new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: "#0EACFF", }, { offset: 1, color: "#3AE8FE", }, ], false ) } } }, }, z: 12, data: value.map(val => { return { name: "", value: val, symbolPosition: "end", } }) }, //上部立体柱 { //上部立体柱 stack: "1", type: "bar", itemStyle: { normal: { color: function (val) { if (isWarning[val.dataIndex]) { return "#980811" } else { return "#0730A6" } }, opacity: 0.7, }, }, label: { show: true, position: "top", //top / left / right / bottom / inside / insideLeft / insideRight / insideTop / insideBottom / insideTopLeft / insideBottomLeft / insideTopRight / insideBottomRight distance: 20, color: "#A2A6C0", fontSize: 12, formatter: function (item) { let a = 100; return a - item.value + "%"; }, }, silent: true, barWidth: 1.5 * vw, barGap: "-100%", // Make series be overlap data: value.map(val => { return { name: "a", value: 100 - val, } }) }, ], }; charts.setOption(option); $(window).resize(charts.resize); } const PercentageBarChartTwo = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ["设备1", "设备2", "设备3", "设备4", "设备5", "设备6", "设备7", "设备8"], yData: [20, 30, 40, 50, 60, 70, 80, 90], } } let option = { color: ["#3398DB"], tooltip: { trigger: "axis", fontSize: 1 * vw, axisPointer: { type: "line", lineStyle: { opacity: 0, }, }, formatter: function (prams) { return prams[0].data + "%"; }, }, grid: { left: "0%", right: "0%", bottom: "0%", top: "15%", height: "85%", containLabel: true, z: 22, }, xAxis: [ { type: "category", gridIndex: 0, data: data.xName, axisTick: { show: false, }, axisLine: { show: false, }, axisLabel: { show: true, color: "rgb(170,170,170)", fontSize: vw, }, }, ], yAxis: [ { type: "value", gridIndex: 0, splitLine: { show: false, }, axisTick: { show: false, }, min: 0, max: 100, axisLine: { show: false, }, axisLabel: { show: false, }, }, ], series: [ { name: "合格率", type: "bar", barWidth: "30%", xAxisIndex: 0, yAxisIndex: 0, label: { show: true, position: "top", //top / left / right / bottom / inside / insideLeft / insideRight / insideTop / insideBottom / insideTopLeft / insideBottomLeft / insideTopRight / insideBottomRight distance: 20, color: "#A2A6C0", fontSize: 0.75 * vw, formatter: function (item) { return item.value + "%"; }, }, itemStyle: { normal: { barBorderRadius: 30, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "#00feff", }, { offset: 0.5, color: "#027eff", }, { offset: 1, color: "#0286ff", }, ]), }, }, data: data.yData, zlevel: 11, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 圆柱背景折线图 const cylindricalBackgroundLineChart = function (data, id) { let charts = echarts.init(id); if (!data) { data = { xName: ['00', '02', '04', '06', '08', '10', '12', '14'], yData: [4.2, 3.8, 4.8, 3.5, 2.9, 2.8, 6, 5], yDataName: "发电量", } } let max = [] data.yData.forEach(val => { max.push(Math.max(...data.yData)) }) let option = { backgroundColor: "rgba(0,0,0,0)", grid: { top: "20%", bottom: "15%", }, tooltip: { trigger: "axis", axisPointer: { type: "shadow", label: { show: true, }, }, }, xAxis: { data: data.xName, axisLine: { show: true, //隐藏X轴轴线 lineStyle: { color: "#01FCE3", }, }, axisTick: { show: false, //隐藏X轴刻度 }, axisLabel: { show: true, textStyle: { color: "#ebf8ac", //X轴文字颜色 }, }, }, yAxis: [ { type: "value", nameTextStyle: { color: "#ebf8ac", }, splitLine: { show: false, }, axisTick: { show: false, }, axisLine: { show: true, lineStyle: { color: "#FFFFFF", }, }, axisLabel: { show: true, textStyle: { color: "#ebf8ac", }, }, }, ], series: [ { name: data.yDataName, type: "line", symbol: "circle", symbolSize: 12, lineStyle: { normal: { width: 2, color: "#0f0", }, }, label: { show: true, position: "top", textStyle: { color: "#fff", fontSize: 0.75 * vw }, }, itemStyle: { color: new echarts.graphic.LinearGradient(0, 0, 1, 1, [ { offset: 0, color: "#C9C7ED", }, { offset: 1, color: "#fff", }, ]), borderColor: "#fff", shadowColor: "rgba(0, 0, 0, .5)", }, data: data.yData, }, { type: "bar", barWidth: '80%', tooltip: { show: false, }, itemStyle: { normal: { barBorderRadius: 50, color: "#0B2F90", opacity: 0.7, label: { show: false, }, shadowColor: "rgba(255, 255, 255, .1)", shadowBlur: 0, shadowOffsetY: 2, shadowOffsetX: 2, }, }, data: max, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 冰山图 const tipFigure = function (data, id) { let charts = echarts.init(id); data = { xName: ['1月', '2月', '3月', '4月', '5月', '6月'], yDataOne: [138, 124, 714, 442, 622, 528], yDataOneName: '能耗', yDataTwo: [138, 124, 714, 442, 622, 528], yDataTwoName: '能耗', }; let xAxisMonth = [], barData = [], lineData = []; for (let i = 0; i < data.xName.length; i++) { xAxisMonth.push(data.xName[i]); barData.push({ name: data.xName[i], value: data.yDataOne[i], }); lineData.push({ name: data.xName[i], value: data.yDataTwo[i], }); } let option = { backgroundColor: "rgba(0,0,0,0)", title: "", grid: { top: "14%", left: "1%", bottom: "1%", containLabel: true, }, tooltip: { trigger: "axis", axisPointer: { type: "none", }, formatter: function (params) { return ( params[0]["data"].name + "
" + data.yDataOneName + ' ' + params[1]["data"].value + "
" + data.yDataTwoName + ' ' + params[0]["data"].value ); }, }, xAxis: [ { type: "category", show: false, data: ["3月", "4月", "5月", "6月", "7月", "8月"], axisLabel: { textStyle: { color: "#b6b5ab", }, }, }, { type: "category", position: "bottom", data: xAxisMonth, boundaryGap: true, // offset: 40, axisTick: { show: false, }, axisLine: { // show: false, }, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#727582', width: 1, } }, axisLabel: { textStyle: { color: "#b6b5ab", }, }, }, ], yAxis: [ { show: true, // offset: 22, splitLine: { show: true, lineStyle: { type: 'dashed', color: '#727582', width: 1, } }, axisTick: { show: false, }, axisLine: { show: true, }, axisLabel: { show: true, color: "#b6b5ab", }, }, { show: false, type: "value", name: "合格率(%)", nameTextStyle: { color: "#ccc", }, axisLabel: { color: "#ccc", }, splitLine: { show: false, }, axisLine: { show: false, }, axisTick: { show: false, }, }, ], color: ["#e54035"], series: [ { name: data.yDataOneName, type: "pictorialBar", xAxisIndex: 1, barCategoryGap: '-80%', // barCategoryGap: '-5%', symbol: 'path://d="M150 50 L130 130 L170 130 Z"', itemStyle: { normal: { color: function (params) { let colorList = [ "rgba(13,177,205,0.3)", "rgba(29,103,182,0.3)", "rgba(13,177,205,0.3)", "rgba(29,103,182,0.3)", "rgba(13,177,205,0.3)", "rgba(29,103,182,0.3)", ]; return colorList[params.dataIndex]; }, borderColor: 'rgba(255,255,255,0.5)', borderWidth: 3 }, emphasis: { opacity: 1, }, }, data: barData, }, { name: data.yDataTwoName, symbolSize: 12, type: "line", yAxisIndex: 1, data: lineData, itemStyle: { normal: { borderWidth: 5, color: { colorStops: [ { offset: 0, color: "#821eff", }, { offset: 1, color: "#204fff", }, ], }, }, }, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 多个环形图 const multipleRingDiagram = function (data, id) { let charts = echarts.init(id); if (!data) { data = [ {value: 10, name: "1月"}, {value: 20, name: "2月"}, {value: 40, name: "3月"}, {value: 45, name: "4月"}, {value: 10, name: "5月"}, {value: 20, name: "6月"}, {value: 40, name: "7月"}, {value: 45, name: "8月"}, {value: 10, name: "9月"}, {value: 20, name: "10月"}, {value: 40, name: "11月"}, {value: 65, name: "12月"} ]; } let option = { backgroundColor: "rgba(0,0,0,0)", polar: { radius: ["10%", "90%"], center: ['30%', '50%'], }, tooltip: { trigger: 'axis', axisPointer: { type: 'line' }, }, angleAxis: { show: false, clockwise: false, // min: function(value) { // return 5 // }, max: function (value) { return value.max + 2; }, }, radiusAxis: { type: "category", axisLabel: { interval: 0, color: "#fff", fontSize: 0.25 * vw, align: "left", margin: "-2", }, axisLine: { show: false, }, axisTick: { show: false, }, splitLine: { show: false, }, z: 20, data: [...data.map((d) => d.name)], }, series: [ { type: "bar", coordinateSystem: "polar", barWidth: 4, barGap: 10, showBackground: true, backgroundStyle: { color: "rgba(255,255,255,0.3)", }, itemStyle: { color: function (params) { return new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset: 0, color: "#00BCFA", }, { offset: 1, color: "#01FE84", }, ]); }, }, roundCap: true, data: data, }, ], }; charts.setOption(option); $(window).resize(charts.resize); } // 中国地图 const ChinaMap = function (data, id, param = {type: undefined}) { let charts = echarts.init(id); $.getJSON('../../board/json/ChinaMapData.json', function (geoJson) { geoJson.features.forEach((val, index) => { val.properties.name = ''.padStart(index, ' ') }) echarts.registerMap("china", geoJson); data = [ {value: [118.8062, 31.9208], index: random(5), type: random(5), state: random(5)}, {value: [127.9688, 45.368], index: random(5), type: random(5), state: random(5)}, {value: [123.1238, 42.1216], index: random(5), type: random(5), state: random(5)}, {value: [114.4995, 38.1006], index: random(5), type: random(5), state: random(5)}, {value: [109.1162, 34.2004], index: random(5), type: random(5), state: random(5)}, {value: [106.3586, 38.1775], index: random(5), type: random(5), state: random(5)}, {value: [101.4038, 36.8207], index: random(5), type: random(5), state: random(5)}, {value: [113.0823, 28.2568], index: random(5), type: random(5), state: random(5)}, {value: [102.9199, 25.46639], index: random(5), type: random(5), state: random(5)}, ] if (param.type) { console.log(param.type) data.forEach(val => { val.type = param.type }) } charts.showLoading(); echarts.registerMap("china", geoJson); charts.hideLoading(); let option = { grid: { top: '0%', left: '0%', right: '0%', bottom: '0%', }, geo: { map: "china", aspectScale: 0.75, //长宽比 zoom: 1.1, roam: false, itemStyle: { normal: { areaColor: { type: "radial", x: 0.5, y: 0.5, r: 0.8, colorStops: [ { offset: 0, color: "#013B8F", // 0% 处的颜色 }, { offset: 1, color: "#013B8F", // 100% 处的颜色 }, ], globalCoord: true, // 缺省为 false }, shadowColor: "#013B8F", shadowOffsetX: 0, shadowOffsetY: 8, }, emphasis: { areaColor: "#2AB8FF", borderWidth: 0, color: "green", label: { show: false, }, }, }, regions: [ { name: "南海诸岛", label: { // formatter:'南海诸岛', // fontSize:750*vw, }, itemStyle: { areaColor: "rgba(0, 10, 52, 1)", borderColor: "rgba(0, 10, 52, 1)", normal: { opacity: 0, label: { show: false, color: "#009cc9", }, }, }, }, ], }, series: [ { type: "map", roam: false, label: { normal: { show: true, textStyle: { color: "#1DE9B6", }, }, emphasis: { textStyle: { // color: "rgb(183,185,14)", }, }, }, itemStyle: { normal: { borderColor: "rgb(147, 235, 248,0.5)", borderWidth: 1, areaColor: { type: "radial", x: 0.5, y: 0.5, r: 0.8, colorStops: [ { offset: 0, color: "#013B8F", // 0% 处的颜色 }, { offset: 1, color: "#013B8F", // 100% 处的颜色 }, ], globalCoord: true, // 缺省为 false }, }, emphasis: { // areaColor: "rgb(46,229,206)", // shadowColor: 'rgb(12,25,50)', // borderWidth: 0.1, }, }, zoom: 1.1, // roam: false, map: "china", //使用 aspectScale: 0.75, //长宽比 // data: this.difficultData //热力图数据 不同区域 不同的底色 }, // 地图标点 { type: "effectScatter", coordinateSystem: "geo", showEffectOn: 'emphasis', zlevel: 1, rippleEffect: { period: 15, scale: 1, brushType: "fill", }, hoverAnimation: true, // label: { // normal: { // formatter: "{b}", // position: "right", // offset: [15, 0], // color: "#1DE9B6", // show: true, // }, // }, itemStyle: { normal: { color: "#1DE9B6", shadowBlur: 10, shadowColor: "#333", }, }, symbol: function (value, data) { // 修改图片为'image://+地址' switch (data.data.type) { case 1: return `image://../../img/mapIcon/hydrogenRefuelingStation${data.data.state}.png` case 2: return `image://../../img/mapIcon/hydrogenPowerStation${data.data.state}.png` case 3: return `image://../../img/mapIcon/oilHydrogenPowerStation${data.data.state}.png` case 4: return `image://../../img/mapIcon/oilHydrogenStation${data.data.state}.png` case 5: return `image://../../img/mapIcon/hydrogenRefuelingStation${data.data.state}.png` } }, symbolSize: [2.5 * vw, 2.5 * vw], data: data, label: { padding: [-16, 0, 0, 5], show: true, position: 'bottom', // align:'left', formatter: function (val) { switch (val.data.type) { case 1: return [`{a|}{b|'加氢站${val.data.index}}`] case 2: return [`{a|}{b|光伏站${val.data.index}}`] case 3: return [`{a|}{b|充装站${val.data.index}}`] case 4: return [`{a|}{b|制氢站${val.data.index}}`] case 5: return [`{a|}{b|能源站${val.data.index}}`] } }, rich: { a: { width: 0.34 * vw, height: 0.34 * vw, borderColor: '#0FF32E', borderWidth: 0.34 * vw, borderRadius: 0.17 * vw, shadowBlur: 20, shadowColor: "#0FF32E", }, b: { padding: [0, 0, 0, 5], color: '#0FF32E', height: 40, fontSize: 0.75 * vw, }, } } }, ], }; charts.on('click', function (params) { if (params.componentSubType === "effectScatter") { console.log(params.data) window.open(`http://121.36.58.109:8011/board/managementPlatformTwo?id=${params.data.type}`); // window.open(`${location.protocol}${location.protocol ? '//' : ''}${location.host}/board/managementPlatformTwo?index=${params.data.index}`); } }); charts.setOption(option, true); $(window).resize(charts.resize); }) } // 地图补充 const mapSupplement = (el, data) => { const htmlData = `
运行中 7个/11%
预警 7个/22%
检修中 7个/33%
建设中 7个/44%
计划中 7个/55%
` $(el).html(htmlData) }