1.一个日期对应多个数据时,需要用到阶梯折线图
把x轴的数据设为相同,y轴数据不同即可
从后台请求到的数据:
处理后的数据:
渲染echarts代码
initSentenceChart() {
let sentenceChart = this.$echarts.init(this.$refs.sentenceTrends)
sentenceChart.setOption({
tooltip: {
trigger: 'axis',
},
legend: {
data: ['读课文', '背课文'],
left: 10,
},
color: ['#22CED4', '#FFC069'],
xAxis: {
type: 'category',
},
yAxis: {
min: 0, //y轴的最小值
type: 'value',
axisLine: {
show: true,
lineStyle: {
color: '#808080',
},
},
},
series: [
{
name: '读课文',
data: this.checkSentenceData,
type: 'line',
},
{
name: '背课文',
data: this.checkSentenceData1,
type: 'line',
},
],
})
},
最终展示:
2.设置平均值的坑
平均值是后台给的 不能自己根据图表数值进行计算
echarts有一个markLine 可以定义average 平均值 但是是根据每一个数据来显示的 平均值对应的有series中的每条数据
但是项目需求不能根据某个数据来计算平均值 要用后端返回的值,所以还是要改。
请求到的数据:
然后!就只能在自己在series里面单独写一个数据 当做是平均值
还要自定义平均值线后面的文字
使用formatter 自定义
代码如下
{
name: '总计',
type: 'line', // 平均值
data:[this.average2,this.average2,this.average2,this.average2,
this.average2,this.average2,this.average2,this.average2,
this.average2,this.average2,this.average2,this.average2,],
itemStyle: {
opacity: 0
},
lineStyle: {
opacity: 0
},
smooth:true,
markLine: {
lineStyle: {
type: 'solid',
},
data: [
{
type: 'average',
//yAxis: this.average2,
name: '平均数',
label: {
normal: {
// position: 'end',
formatter: function(params){
return '平均值:' +params.value
}
}
}
}
]
}
}
最终展示为: