1、在项目中下载Echarts包
npm install echarts --save
2、在需要的vue文件中导入Echarts 需要其他Echarts的配置项去官网查看即可
import * as echarts from 'echarts';
Echarts官网如下:
Apache ECharts
3、我们需要一个容器容纳Echarts图表并设置宽高
<div id="Sevendayalarmtimes"></div>
#Sevendayalarmtimes {
width: 400px;
height: 400px;
}
4、渲染Echarts图表的方法
async Sevendayalarmtimes() { try { 这里写需要从后端获取的数据 } catch (error) { console.log(error); } var myChart = echarts.getInstanceByDom(document.getElementById('Sevendayalarmtimes')); if (myChart == undefined) { myChart = echarts.init(document.getElementById('Sevendayalarmtimes')); } this.$nextTick(() => { var option; option = { // backgroundColor: '', tooltip: { trigger: 'axis', axisPointer: { type: 'shadow', }, backgroundColor: 'rgba(9, 24, 48, 0.5)', borderColor: 'rgba(75, 253, 238, 0.4)', textStyle: { color: '#CFE3FC', }, extraCssText: 'width:160px', borderWidth: 1, formatter: function (params) { let str = ''; for (let i = 0; i < params.length; i++) { if (i == 0) { str += `${params[i].name}<br/>${params[i].seriesName.slice(0, params[i].seriesName.indexOf('('))}:  <span>${params[0].data}</span>%<br/>`; continue; } str += `${params[i].seriesName.slice(0, params[i].seriesName.indexOf('('))}:  <span>${params[i].data}</span>个<br/>`; } return str; }, }, legend: [ { data: ['报警次数-柱状'], top: '25', x: '30%', itemWidth: 14, textStyle: { color: '#c1cadf', fontSize: 16, }, }, { data: ['报警次数-折线'], x: '50%', top: '25', itemStyle: { borderWidth: 2, }, textStyle: { color: '#c1cadf', fontSize: 16, }, }, ], grid: { left: '20px', right: '20px', top: '50px', bottom: '30px', containLabel: true, }, toolbox: { show: true, orient: 'vertical', x: 'right', y: 'center', }, xAxis: [ { type: 'category', boundaryGap: true, axisTick: { show: false, }, data: [ "1/15/2024", "1/16/2024", "1/17/2024", ], // 将后端数据放在data中 axisLine: { lineStyle: { color: 'rgba(51, 176, 255, 1)', }, }, axisLabel: { interval: 0, color: 'rgba(207, 227, 252, 1)', fontSize: 14, }, }, ], yAxis: [ { type: 'value', name: '', axisTick: { show: true, }, axisLine: { show: true, lineStyle: { color: 'rgba(120, 160, 236, 1)', }, symbol: ['none', 'arrow'], symbolSize: [5, 12], symbolOffset: [0, 10], }, axisLabel: { interval: 0, color: 'rgba(207, 227, 252, 1)', }, splitLine: { show: false, lineStyle: { color: 'rgba(39, 57, 75, 1)', width: 1, type: 'solid', }, }, }, { type: 'value', name: '', axisTick: { show: true, }, axisLine: { show: true, lineStyle: { color: 'rgba(207, 227, 252, 1)t', }, symbol: ['none', 'arrow'], symbolSize: [5, 12], symbolOffset: [0, 10], }, min: 0, max: 102, axisLabel: { interval: 0, color: 'rgba(207, 227, 252, 1)', formatter: '{value} %', }, splitLine: { show: false, lineStyle: { color: 'rgba(39, 57, 75, 1)', width: 1, type: 'solid', }, }, }, ], series: [ { name: '报警次数-折线', yAxisIndex: 1, type: 'line', smooth: false, data: [ "0", "0", "0", ], // 将后端数据放在data中 symbol: 'circle', symbolSize: 8, itemStyle: { // normal: { color: '#FFFFFF', borderColor: 'rgba(0, 255, 240, 1)', lineStyle: { color: 'rgba(0, 255, 240, 1)', }, // }, }, }, { type: 'bar', yAxisIndex: 0, name: '报警次数-柱状', itemStyle: { // normal: { color: new echarts.graphic.LinearGradient( 0, 0, 0, 1, [ { offset: 0, color: 'rgba(32, 178, 232, 1)', }, { offset: 1, color: 'rgba(32, 178, 232, 0)', }, ], false ), // }, }, barWidth: 24, data: [ "0", "0", "0", ], // 将后端数据放在data中 }, ], }; myChart.clear(); option && myChart.setOption(option); }); },
这样我们就完成了渲染可视化折线图和柱状图啦,希望可以帮到大家!!!