2023年全国职业院校技能大赛-大数据应用开发-数据可视化

        可视化题目与以往相同,做法类似,我这里展示得到语句后处理优化以后的代码,以函数式来写可视化,比以前400-500多行代码简洁到100多行。其他题目见本栏目,那里面的代码都是没有优化后的,这次主要以效率和精简给大家提供更多的思路。

        我们得到的接口数据类似这种 :

25e8024aad5e4e0880d3a8789a513bad.png

子任务一:用柱状图展示消费额最高的省份

        编写Vue工程代码,根据接口,用柱状图展示2020年消费额最高的5个省份,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴

cf37cbfacd1445ffb62e76f1fbb85c86.png

6dbfc0a8171640f782aeaf0b98f604bd.png

<template>
  <div id="main" style="width: 1000px; height: 400px"></div>
</template>

<script>
import axios from "axios";
import * as echarts from "echarts";

export default {
  mounted() {
    let url = "http://localhost:5000/first";
    axios.get(url).then((res) => {
      let datas = res.data.data;

      //取出所有省份的消费额度
      let xfe = function (array, name, value) {
        let a = [];
        let zhi = false;
        for (let i in array) {
          for (let j in a) {
            if (array[i][name] == a[j].name) {
              a[j].value += array[i][value];
              a[j].count += 1;
              zhi = true;
              break;
            } else {
              zhi = false;
            }
          }
          if (!zhi) {
            a.push({
              name: array[i][name],
              value: array[i][value],
              count: 1,
              // name:array[i][name],value:value
            });
          }
        }
        return a;
      };

      //分割
      let qwg = function (array, num) {
        let a = [];
        for (let i = 0; i < num; i++) {
          a.push(array[i]);
        }
        return a;
      };

      //取值
      let data = function (array, value, bool) {
        let a = [];
        if (bool) {
          for (let i in array) {
            a.push((array[i][value] / array[i].count).toFixed(2));
          }
        }else{
          for (let i in array) {
            a.push(array[i][value]);
          }
        }

        return a;
      };


      //定义第一个图的数据
      let sf = xfe(datas,'provinceName','finalTotalAmount')
      //排序
      sf.sort((a,b)=>{
        return b.value - a.value
      })
      //取5个最高的省份
      sf = qwg(sf,5)
      console.log(sf);

      let options1 = {
        title:{
          text:'柱状图展示2020年消费额最高的5个省份'
        },
        xAxis:{
          name:'省份',
          data:data(sf,'name')
        },
        yAxis:{
          name:'消费额'
        },
        series:{
          type:'bar',
          data:data(sf,'value')
        }
      }

      let myChats = echarts.init(document.getElementById("main"));
      myChats.setOption(options1)

  },
};

子任务二:用饼状图展示各地区消费能力

        编写Vue工程代码,根据接口,用饼状图展示2020年各地区的消费总额占比,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴

3cb3c654e20e4fa1ab1dce0c33e85fd3.png 

b5f796aeaf344821b463a482e5e39399.png 

      //各地区
      let dq = xfe(datas,'regionName','finalTotalAmount')
      console.log(dq);

      let options2 = {
        title:{
          text:'饼状图展示2020年各地区的消费总额占比'
        },
        series:{
          type:'pie',
          data:dq,
        }
      }

      myChats.setOption(options2)

子任务三:用折线图展示每年上架商品数量的变化

编写Vue工程代码,根据接口,用折线图展示每年上架商品数量的变化情况,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴

8c825e0ee0274b5aa97b63359c464fd8.png 

670a217708ce4e0db7e9399c1002179d.png 

      //每年上架商品数量的变化情况

      let spbhua = xfe(datas,'year',1)
      //这里用到的接口数据不一样,所以我把value设置为1,在xfe里面有一个注释的
        // name:array[i][name],value:value就是这里的用途。

      console.log(spbhua);

      let options3 = {
        title:{
          text:"折线图展示每年上架商品数量的变化情况"
        },
        xAxis:{
          name:'年份',
          data:data(spbhua,'name')
        },
        yAxis:{},
        series:{
          type:'line',
          data:data(spbhua,'value')
        }
      }

      myChats.setOption(options3)

 

子任务四:用条形图展示消费额最高的地区

编写Vue工程代码,根据接口,用条形图展示2020年消费额最高的5个地区,同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴51727485b0914a90b606658ad490107f.png 

5f92462227ec498b806f89911ec36aa1.png 

      //条形图展示2020年消费额最高的5个地区

      let zgdq = xfe(datas,'regionName','finalTotalAmount')
      zgdq.sort((a,b)=>{
        return b.value - a.value
      })
      zgdq = qwg(zgdq,5)
      console.log(zgdq);

      let options4 = {
        title:{
          text:'条形图展示2020年消费额最高的5个地区'
        },
        xAxis:{
          name:'消费额'
        },
        yAxis:{
          name:'地区',
          data:data(zgdq,'name')
        },
        series:{
          type:'bar',
          data:data(zgdq,'value')
        }
      }

      myChats.setOption(options4)

子任务五:用散点图展示省份平均消费额

编写Vue工程代码,根据接口,用基础散点图展示2020年最高10个省份平均消费额(四舍五入保留两位小数),同时将用于图表展示的数据结构在浏览器的console中进行打印输出,将图表可视化结果和浏览器console打印结果分别截图并粘贴2cb5b7117cb64ff68b427ea0af4456f5.png 

c2f19c186e304013ad94610dc1e5d6d9.png 

//散点图展示2020年最高10个省份平均消费额
      let sdt = xfe(datas, "provinceName", "finalTotalAmount");
      sdt.sort((a, b) => {
        return b.value - a.value;
      });
      sdt = qwg(sdt, 10);
      console.log(data(sdt, "name", false));
      console.log(data(sdt, "value", true));

      let options5 = {
        title: {
          text: "散点图展示2020年最高10个省份平均消费额",
        },
        xAxis: {
          name: "省份",
          data: data(sdt, "name", false),
        },
        yAxis: {
          name: "平均消费额",
        },
        series: {
          type: "scatter",
          data: data(sdt, "value", true),
        },
      };

      myChats.setOption(options5)

 

 

 

 

### 关于2023全国职业院校技能大赛GZ033大数据应用开发任务F的解析 目前提供的引用资料并未直接提及“2023全国职业院校技能大赛GZ033大数据应用开发任务F”的具体内容。然而,通过类比其他赛项的要求以及常见的大数据竞赛标准,可以推测该任务可能涉及以下几个方面: #### 1. 数据采集与预处理 此部分通常要求参赛者能够完成数据源的选择、爬取或导入操作,并对其进行清洗和转换以便后续分析。这一步骤强调对真实世界复杂数据的理解能力以及工具使用的熟练度。 例如,在Python中实现简单的网页抓取可以通过如下方式完成: ```python import requests from bs4 import BeautifulSoup url = 'https://example.com' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') data = soup.find_all('div', class_='content') # 假设目标数据位于特定class下 print([item.text.strip() for item in data]) ``` #### 2. 数据存储与管理 针对大规模的数据集,合理选用数据库类型(如关系型MySQL/PostgreSQL或者NoSQL MongoDB/HBase),并设计高效的表结构来满足查询性能的需求显得尤为重要[^1]。 假设采用MongoDB作为非结构化文档存储解决方案,则初始化连接过程可表示为: ```javascript const { MongoClient } = require('mongodb'); async function main(){ const uri = "your_mongodb_connection_string"; const client = new MongoClient(uri); try { await client.connect(); console.log("Connected correctly to server"); const database = client.db('test_database'); const collection = database.collection('documents'); // Perform actions on the collection object } finally { await client.close(); } } main().catch(console.error); ``` #### 3. 数据挖掘与机器学习建模 利用统计学方法探索隐藏模式或是训练预测模型是比赛中的核心环节之一。这里不仅考验算法理论基础,还关注工程实践技巧比如特征工程优化等。 下面展示了一个基于Scikit-Learn库构建随机森林分类器的例子: ```python from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) rf_clf = RandomForestClassifier(n_estimators=100, max_depth=None, min_samples_split=2, bootstrap=True) rf_clf.fit(X_train, y_train) predictions = rf_clf.predict(X_test) accuracy = accuracy_score(y_test, predictions) print(f'Accuracy: {accuracy}') ``` #### 4. 可视化呈现结果 最后阶段往往需要借助图表等形式直观表达发现规律给评审团看。Matplotlib、Seaborn甚至是D3.js都是不错的选择用于制作高质量图形作品。 以下是绘制折线图的一个基本实例: ```python import matplotlib.pyplot as plt plt.figure(figsize=(8,6)) plt.plot(x_values, y_values, label='Trend Line', color='blue') plt.title('Sample Trend Analysis') plt.xlabel('Time Periods') plt.ylabel('Value Measurements') plt.legend() plt.grid(True) plt.show() ``` 尽管以上内容并非完全对应具体题目说明文件里的条款描述,但它代表了一般情况下此类赛事所考察的知识范畴和技术要点[^2]。
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值