import { Pieces } from "../@share/pieces"; /** * 类项目中的xy折线图 * demo https://echarts.apache.org/examples/zh/editor.html?c=dynamic-data2 * 文档 https://echarts.apache.org/zh/option.html#title */ export class LineChartXy { data = []; seconds = 0; constructor(myChart) { // 绘制图表,初始化绘图数据 this.initData(); myChart.setOption(this.getOptions(this.data[0], this.data[1])); // 随机数据 this.setDynamicData(myChart); } /** * 初始化数据 */ initData() { let x = Pieces.getRandomNumberByCount(1, 100, 0, 50); this.data = [ [[x, this.seconds]], [[this.seconds, x]], ]; } /** * 设置数据更新展示 * @param myChart */ setDynamicData(myChart) { let self = this; // 设置数据显示 setInterval(function () { let x = Pieces.getRandomNumberByCount(1, 100, 0, 50); self.seconds++ if (self.seconds >= 60) { self.seconds = 0; } self.data[0].push([x, self.seconds]); self.data[1].push([self.seconds, x]); myChart.setOption({ series: [ { data: self.data[0], }, { data: self.data[1], }, ] }); }, 1000); } /** * 配置项 * @param data1 * @param data2 * @returns Object */ getOptions(data1, data2) { return { xAxis: { type: 'value', min: 0, max: 100, axisLabel: { show: true, }, interval: 25, // 强制设置坐标轴分割间隔。 }, yAxis: { type: 'value', min: 0, max: 100, boundaryGap: [ 0, '100%' ], splitLine: { show: true, }, splitNumber: 4, // 坐标轴的分割段数,需要注意的是这个分割段数只是个预估值 interval: 25, // 强制设置坐标轴分割间隔。 axisLine: { show: true, }, axisTick: { // 坐标轴刻度相关设置。 show: true, inside: false, // 坐标轴刻度是否朝内,默认朝外。 length: 5, // 坐标轴刻度的长度。 }, }, tooltip: { trigger: 'axis', formatter: function (params) { return '(' + params[0].value[0] + ',' + params[0].value[1] + ')'; }, renderMode: 'richText', padding: [ 5, 10 ], }, legend: { show: true, }, series: [ { name: '1', type: 'line', showSymbol: false, data: data1 }, { name: '2', type: 'line', showSymbol: false, data: data2 }, ] }; } }