task5 用柱状图展示平均消费额最高的5个省份,折线图展示这5个省所在的地区的平均消费额变化

<template>
  <div>
    用折柱混合图展示2020年各省份平均消费额(四舍五入保留两位小数)和地区平均消费额(四舍五入保留两位小数)的对比情况,柱状图展示平均消费额最高的5个省份,折线图展示这5个省所在的地区的平均消费额变化
    同时将用于图表展示的数据结构在浏览器的console中进行打印输出
  </div>
  <div id="main"></div>
</template>

<script>
import echarts from '../assets/echarts.min';
import axios from '../assets/axios';

export default {
  mounted() {
    var myChart = echarts.init(document.getElementById('main'));

    axios.post('/api/selectOrderInfo', {
      "startTime": "2020-01-01T00:00:00+0800",
      "endTime": "2020-12-31T23:59:59+0800"
    }).then(response => {
      var data = response.data.data;

      // 按省份和地区汇总消费额度和订单数
      var provinceData = data.reduce((acc, item) => {
        var provinceName = item.provinceName;
        var regionName = item.regionName;
        var finalTotalAmount = item.finalTotalAmount;

        // 汇总省份数据
        if (acc.provinces[provinceName]) {
          acc.provinces[provinceName].totalAmount += finalTotalAmount;
          acc.provinces[provinceName].orderCount++;
          acc.provinces[provinceName].regionName = regionName; // 保存地区名
        } else {
          acc.provinces[provinceName] = {
            totalAmount: finalTotalAmount,
            orderCount: 1,
            regionName: regionName,
            regionAvgAmount: 0, // 初始值为0
          };
        }

        // 汇总地区数据
        if (acc.regions[regionName]) {
          acc.regions[regionName].totalAmount += finalTotalAmount;
          acc.regions[regionName].orderCount++;
        } else {
          acc.regions[regionName] = {
            totalAmount: finalTotalAmount,
            orderCount: 1
          };
        }

        return acc;
      }, { provinces: {}, regions: {} });

      // 计算每个省份的平均消费额
      var provinceAvg = Object.keys(provinceData.provinces).map(province => {
        var avgAmount = (provinceData.provinces[province].totalAmount / provinceData.provinces[province].orderCount).toFixed(2);
        return {
          province,
          avgAmount,
          regionName: provinceData.provinces[province].regionName
        };
      });

      // 更新每个省份对应地区的平均消费额
      provinceAvg.forEach(item => {
        var correspondingRegion = provinceData.provinces[item.province].regionName;
        item.regionAvgAmount = (provinceData.regions[correspondingRegion].totalAmount / provinceData.regions[correspondingRegion].orderCount).toFixed(2);
      });

      // 按平均消费额降序排序并取前5个省份
      var top5Provinces = provinceAvg
          .sort((a, b) => b.avgAmount - a.avgAmount)
          .slice(0, 5);

      // 打印处理后的数据结构
      console.log("平均消费额前五的省份和地区的平均消费额:",top5Provinces);

      // 设置图表选项
      var option = {
        title: {
          text: '2020年各省份平均消费额和地区平均消费额对比',
          left: 'center'
        },
        legend: {
          data: ['省份平均消费额', '地区平均消费额'],
          top: 'bottom'
        },
        xAxis: [{
          type: 'category',
          data: top5Provinces.map(item => item.province)
        },{
          type: 'category',
          data: top5Provinces.map(item => item.regionName)
        }],
        yAxis: [
          {
            type: 'value',
            name: '省份平均消费额'
          },
          {
            type: 'value',
            name: '地区平均消费额'
          }
        ],
        series: [
          {
            name: '省份平均消费额',
            type: 'bar',
            data: top5Provinces.map(item => parseFloat(item.avgAmount))
          },
          {
            name: '地区平均消费额',
            type: 'line',
            yAxisIndex: 1,
            data: top5Provinces.map(item => parseFloat(item.regionAvgAmount))
          }
        ]
      };

      // 使用刚指定的配置项和数据显示图表
      myChart.setOption(option);
    });
  }
}
</script>

<style>
#main {
  width: 100%;
  height: 500px;
}
</style>

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在echarts的柱状图中添加平均线,你可以在series中的markLine属性中设置。具体步骤如下: 1. 在series中找到你的柱状图配置。 2. 在该配置中的markLine属性中添加一个对象,用于定义平均线的样式和数据。 3. 在这个对象中,设置type为"average",表示这是平均线。 4. 如果需要,你还可以通过name属性给平均线取一个名字。 5. 保存你的配置,重新渲染图表。 这样,你就可以在echarts柱状图中显示平均线了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [echarts柱状图的样式调整及应用](https://blog.csdn.net/qq_45991812/article/details/129425409)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [ECharts JavaScript图表库-其他](https://download.csdn.net/download/weixin_38655767/19575754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Echarts柱状图——设置平均值线](https://blog.csdn.net/weixin_43790703/article/details/122737180)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值