首页 > 其他分享 >大数据分析之数据下钻上卷

大数据分析之数据下钻上卷

时间:2024-03-19 18:35:01浏览次数:21  
标签:数据分析 function 数据 上卷 item params dataGroupId data groupId

声明:本次任务简单所以没有前后端分离去做,因此不需要异步处理(cors)

根据Python将数据合并清洗,分析之后,将得到的数据存入数据库,数据库中就是各行业的类别以及数量。

前端用java的相关知识利用echarts绘制数据下钻和上卷图

前端:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <!-- 引入刚刚下载的 ECharts 文件 -->
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/echarts.js"></script>
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">

  var myChart = echarts.init(document.getElementById('main'));
  var option;

  option = {
    xAxis: {
      data: ['北京', '河北', '天津']
    },
    yAxis: {},
    dataGroupId: '',
    animationDurationUpdate: 500,
    series: {
      type: 'bar',
      id: 'sales',
      data: [
        {
          value: 5,
          groupId: 'bj'
        },
        {
          value: 2,
          groupId: 'hb'
        },
        {
          value: 4,
          groupId: 'tj'
        }
      ],
      universalTransition: {
        enabled: true,
        divideShape: 'clone'
      }
    }
  };
  //
  // const drilldownData = [
  //   {
  //     dataGroupId: 'bj',
  //     data: [
  //       ['应用技术', 89],
  //       ['自选课题', 1],
  //     ]
  //   },
  //   {
  //     dataGroupId: 'hb',
  //     data: [
  //       // ['Apples', 4],
  //       // ['Oranges', 2]
  //       ['地方计划', 36],
  //       ['其他', 150,],
  //       ['自选课题', 78],
  //       ['自选课题', 78],
  //       ['地方基金', 2,],
  //       ['国家科技计划', 305],
  //       ['资源与环境', 3],
  //       ['生物与医药', 4],
  //       ['电子信息', 61],
  //       ['地方基金', 2,],
  //       ['现代农业', 60],
  //       ['资源与环境', 1],
  //       ['先进制造与自动化',40],
  //       ['材料与化工', 5],
  //       ['航空与航天', 5],
  //       ['能源与交通', 2],
  //       ['社会公益', 27],
  //       ['应用技术', 8,],
  //     ]
  //   },
  //   {
  //     dataGroupId: 'tj',
  //     data: [
  //         ['先进制造与自动化',121],
  //         ['现代农业',425,],
  //         ['材料与化工',179],
  //         ['资源与环境',500],
  //         ['电子信息',160],
  //         ['生物与医药',130],
  //         ['能源与交通',54],
  //         ['国内先进',1],
  //         ['社会公益',115],
  //         ['其他',108],
  //         ['新型材料',2],
  //         ['生物技术医药'],
  //         ['应用技术',57],
  //
  //     ]
  //   }
  // ];


  const drilldownData = [];

  function fetchDataAndProcess(groupId) {
    axios.get(`http://localhost:8088/${groupId}`)
            .then(function (response) {
              // 将后端返回的数据转换为前端所需格式
              const formattedData = response.data.map(item => [item.type, parseInt(item.number)]);

              // 添加到drilldownData中
              const group = {
                dataGroupId: groupId,
                data: formattedData
              };
              drilldownData.push(group);
              // 如果所有数据都已加载,则进行后续处理(例如渲染ECharts图表)
              if (drilldownData.length === 3) {
                console.log(drilldownData);
                // 这里可以使用drilldownData来初始化或更新你的ECharts图表
                // ...
              }
            })
            .catch(function (error) {
              console.error(`Error fetching data for group ${groupId}:`, error);
            });
  }

  // 分别获取并处理bj、hb、tj三类数据
  fetchDataAndProcess('bj');
  fetchDataAndProcess('hb');
  fetchDataAndProcess('tj');

  myChart.on('click', function (event) {
    if (event.data) {
      var subData = drilldownData.find(function (data) {
        return data.dataGroupId === event.data.groupId;
      });
      if (!subData) {
        return;
      }
      myChart.setOption({
        xAxis: {
          data: subData.data.map(function (item) {
            return item[0];
          })
        },
        series: {
          type: 'bar',
          id: 'sales',
          dataGroupId: subData.dataGroupId,
          data: subData.data.map(function (item) {
            return item[1];
          }),
          universalTransition: {
            enabled: true,
            divideShape: 'clone'
          }
        },
        tooltip: {
          trigger: 'item',
          formatter: function (params) {
            // 对于原始数据(省份),params.data 应该是一个对象,例如 { value: 5, groupId: 'bj' }
            if (params.componentType === 'series' && params.seriesType === 'bar') {
              return params.name + ': ' + params.value;
            }
            // 对于下钻数据(具体项目),params.data 应该是一个数组,例如 ['应用技术', 89]
            else if (params.componentType === 'series' && params.data) {
              return params.data[0] + ': ' + params.data[1];
            }
            // 如果都不符合,则返回空字符串防止错误提示
            return '';
          }
        },
        graphic: [
          {
            type: 'text',
            left: 50,
            top: 20,
            style: {
              text: 'Back',
              fontSize: 18
            },
            onclick: function () {
              myChart.setOption(option);
            }
          }
        ]
      });
    }
  });

  option && myChart.setOption(option);
</script>
</body>
</html>

思路:首先准备一个空的集合,集合里预留两个关键字dataGroupId和data,id字段用于点击事件下钻到下一级,data存放后续后端的数据。

定义一个函数格局id调用获取后端的数据,如果前后端数据格式不一样可以使用response.data.map(item => [item.‘’, parseInt(item.number)]);转换一下.

标签:数据分析,function,数据,上卷,item,params,dataGroupId,data,groupId
From: https://www.cnblogs.com/copyjames/p/18083668

相关文章

  • 使用Python爬取豆瓣电影影评:从数据收集到情感分析
    简介在当今数字化时代,对电影的评价和反馈在很大程度上影响着人们的选择。豆瓣作为一个知名的电影评价平台,汇集了大量用户对电影的评论和评分。本文将介绍如何使用Python编写爬虫来获取豆瓣电影的影评数据,并通过情感分析对评论进行简单的情感评价。环境准备在开始之前,我们需要......
  • 直播预约丨《袋鼠云大数据实操指南》No.1:从理论到实践,离线开发全流程解析
    近年来,新质生产力、数据要素及数据资产入表等新兴概念犹如一股强劲的浪潮,持续冲击并革新着企业数字化转型的观念视野,昭示着一个以数据为核心驱动力的新时代正稳步启幕。面对这些引领经济转型的新兴概念,为了更好地服务于客户并提供切实可行的实践指导,自3月20日起,袋鼠云将推出全新......
  • WPF —— 控件模版和数据模版
    1:控件模版简介:自定义控件模版:自己添加的样式、标签,控件模版也是属于资源的一种,    每一个控件模版都有一唯一的key,在控件上通过template属性进行绑定什么场景下使用自定义控件模版,当项目里面多个地方使用到相同效果,这时候可以把相同    效果封装成一个......
  • RestCloud数据集成平台-Windows全量包安装部署详细教程
     1.安装准备1.1服务器硬件环境要求RestcloudDataOps服务器的最低运行环境如下:CPU:Intel1.6GHz4核或以上内存:可用内存4G或以上(不包括操作系统等其他程序占用内存)可用硬盘空间:40G或以上最少服务器数量:1台1.2服务器端软件环境要求支持操作系统:Windows11/Windows10/W......
  • 微博情感评论分析系统-完整代码数据 毕业设计
    ......
  • 定向减免!函数计算让轻量 ETL 数据加工更简单,更省钱
    业内较为常见的高频短时ETL数据加工场景,即频率高时延短,一般费用大头均在函数调用次数上,推荐方案一般为攒批处理,高额的计算成本往往令用户感到头疼,函数计算推出定向减免方案,让ETL数据加工更简单、更自动化、容错能力更强。自2024年01月01日0时起,函数计算定向减免来自阿里云消息......
  • react使用map循环渲染dom时,增加或删减数组,但想保持其余的dom与数据不发生改变
     核心思路:dom渲染与key值有关系,如果想实现上述需求,则需要关注改变前后的循环项的key值是否发生改变currentCabinet?.map((item,index)=><BaseInfokey={`currentCabinet${item?.ciId}`}sceneKey={sceneKey}currentCabinet={item}/>)如以上示例,以ciId为key值,可以保证即......
  • openGauss DB4AI-数据库驱动AI
    DB4AI:数据库驱动AI可获得性本特性自openGauss2.1.0版本开始引入。特性简介DB4AI是指利用数据库的能力驱动AI任务,实现数据存储、技术栈的同构。通过在数据库内集成AI算法,令openGauss具备数据库原生AI计算引擎、模型管理、AI算子、AI原生执行计划的能力,为用户提供普惠AI技术......
  • 【专题】2024年中国物流地产市场趋势及展望报告合集PDF分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35388原文出处:拓端数据部落公众号2023年,中国物流地产市场在压力之下呈现出波动的复苏态势,市场需求展现出结构性的变化特点。展望未来,物流地产市场将逐渐走向恢复,但不同区域市场之间的表现可能会更加分化。经济的新业态和新动能将为物流地产市场带......
  • 数据报告分享|SPSS基于多元回归模型的电影票房预测
    全文链接:https://tecdat.cn/?p=33190原文出处:拓端数据部落公众号本文通过利用回归模型对电影的票房(以及放映场数,观影人数)进行了研究,确定了决定电影的票房的重要因素。并讲述、论证了预测电影的票房是电影投资的至关重要的环节。通过对电影票房预测技术的发展和探讨,深度剖析了电......