"data": [ { "id": 78506, "finalTotalAmount": 305062.00, "outTradeNo": "756847726439369", "provinceName": "北京", "regionName": "华北", "userName": "华馥" }, { "id": 78559, "finalTotalAmount": 6111.00, "outTradeNo": "341957455961748", "provinceName": "北京", "regionName": "华北", "userName": "罗菊兰" }, 这是一小段示例数据,按照这段示例数据的格式用折柱混合图展示2020年各省份平均消费额(四舍五入保留两位小数)和地区平均消费额(四舍五入保留两位小数)的对比情况,柱状图展示平均消费额最高的5个省份,折线图展示这5个省所在的地区的平均消费额变化
时间: 2023-08-05 08:05:43 浏览: 213
根据示例数据的格式,我们可以使用折柱混合图来展示2020年各省份平均消费额和地区平均消费额的对比情况,并且柱状图展示平均消费额最高的5个省份,折线图展示这5个省所在的地区的平均消费额变化。以下是修改后的代码:
```html
<template>
<div id="bar1" style="width:900px;height:900px"> 平均消费额对比情况
<button @click="getData">获取数据</button>
<button @click="bar1">处理数据</button>
</div>
</template>
<script>
import * as echarts from "../src/assets/echarts.min";
import axios from 'axios';
export default {
data() {
return {
list: [],
provinceMap: new Map(),
regionMap: new Map(),
x_data: [],
y_data_province: [],
y_data_region: []
}
},
methods: {
getData() {
axios({
method: 'post',
url: '/api/dataVisualization/selectOrderInfo',
data: {
"startTime": "2020-01-01 00:00:00",
"endTime": "2020-12-30 00:00:00"
}
}).then((result) => {
this.list = result.data.data;
console.log(result.data.data);
}).catch((err) => {
console.log(err);
});
},
bar1() {
this.list.forEach((x) => {
if (this.provinceMap.has(x.provinceName)) {
const value = this.provinceMap.get(x.provinceName);
this.provinceMap.set(x.provinceName, value + x.finalTotalAmount);
} else {
this.provinceMap.set(x.provinceName, x.finalTotalAmount);
}
if (this.regionMap.has(x.regionName)) {
const value = this.regionMap.get(x.regionName);
this.regionMap.set(x.regionName, value + x.finalTotalAmount);
} else {
this.regionMap.set(x.regionName, x.finalTotalAmount);
}
});
let province_data = [];
let region_data = [];
this.provinceMap.forEach((value, key) => {
const count = this.list.filter(x => x.provinceName === key).length;
const avg = Number((value / count).toFixed(2));
province_data.push({
province: key,
avg: avg
});
});
let sortProvinceData = province_data.sort((a, b) => (b.avg - a.avg)).slice(0, 5);
for (let i of sortProvinceData) {
this.x_data.push(i.province);
this.y_data_province.push(i.avg);
const regionAvg = Number(this.regionMap.get(i.province).toFixed(2));
region_data.push(regionAvg);
}
let barChart = echarts.init(document.getElementById("bar1"));
const option = {
xAxis: [
{
type: 'category',
data: this.x_data
}
],
yAxis: [
{
type: 'value',
name: '省份平均消费额'
},
{
type: 'value',
name: '地区平均消费额'
}
],
series: [
{
name: '省份平均消费额',
data: this.y_data_province,
type: 'bar'
},
{
name: '地区平均消费额',
data: region_data,
type: 'line',
yAxisIndex: 1
}
]
};
option && barChart.setOption(option, true);
}
}
}
</script>
```
在这个例子中,我们使用 `provinceMap` 和 `regionMap` 来分别存储省份和地区的消费额,并计算其平均值。然后,我们选择平均消费额最高的5个省份进行展示,并获取这5个省份所在的地区的平均消费额数据。在 `option` 中,我们使用了两个 `yAxis` 来分别表示省份平均消费额和地区平均消费额的纵坐标轴。通过添加一条折线系列来展示这5个省份所在地区的平均消费额变化。最后,根据修改后的 `option` 进行图表渲染。
阅读全文