book2Task1 用柱状图展示2020年前十(降序排列)省份 所有订单消费额的中位数

<template>
  <div>
    用柱状图展示2020年前十省份 所有订单消费额的中位数
    同时将用于图表展示的数据结构在浏览器的console中进行打印输出
  </div>
  <div id="main"></div>
</template>

<script>
import echarts from '../assets/echarts.min'; // 请确保安装了 echarts,并使用正确的引入方式
import axios from '../assets/axios'; // 请确保安装了 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 finalTotalAmount = item.finalTotalAmount;

        if (acc[provinceName]) {
          acc[provinceName].push(finalTotalAmount);   //push用于将一个或多个元素添加到数组的末尾。【将每个省份对应的'finalTotalAmount'添加到数组中】
        } else {
          acc[provinceName] = [finalTotalAmount];     //如果'provinceName'在'acc'对象中不存在,说明是 第一次遇到该省份,那么会 创建一个新的数组'[finalTotalAmount]'并赋值给'acc[provinceName]'
        }

        return acc;
      }, {});

      // 计算每个省份订单消费额的中位数
      var medianData = Object.keys(provinceData).map(province => {        //medianData中位数数据
        var amounts = provinceData[province].sort((a, b) => a - b);
        var len = amounts.length;
        var mid = Math.floor(len / 2);  //计算数组长度len的一半,用'Math.floor'将结果向下取整。(这是为了找到数组的中间位置)

        return {
          province,
          median: len % 2 === 0 ? ((amounts[mid - 1] + amounts[mid]) / 2).toFixed(2) : amounts[mid].toFixed(2)
        };  //'==='比较值 和 比较值的类型【比较的两个值类型不同,返回'false'。】【只有在值和类型 都相同时,'==='才返回'true'】 ;      ‘len%2===0’表示判断长度'len'是否为偶数,是就返回'true',否则返回'false'。
      });

      // 按中位数降序排序并取前10个省份
      var top10Provinces = medianData
          .sort((a, b) => b.median - a.median)
          .slice(0, 10);

      // 打印处理后的数据结构
      console.log('最高的十个省份',top10Provinces);

      // 设置图表选项
      var option = {
        title: {
          text: '2020年部分省份订单消费额中位数',
          left: 'center'
        },
        xAxis: {
          type: 'category',
          data: top10Provinces.map(item => item.province)
        },
        yAxis: {
          type: 'value',
          name: '中位数'
        },
        series: [{
          data: top10Provinces.map(item => parseFloat(item.median)),
          type: 'bar'
        }]
      };

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

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

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值