大数据分析展示平台(echarts + vue)

本次期末项目要求利用 Hive 分析数据集,然后最终以图表的形式呈现。本文不涉及 Hive 方面有关内容,主要记录一下前端的呈现以及所用到的主要方法及技术。

1.页面展示(部分)

项目展示

 

 

 

 

 2.主要效果实现

     2.1 首页 3D 效果实现

 

 所用工具:Spline

Spline 是一款轻量化的3D设计工具,相较于 C4D 和 3DMax 等传统的3D设计工具来讲,Spline对于3D建模新手来说是非常友好的。Spline 在网页端就可以实现设计建模工作,并且自带有多种导出方式。还可以设置鼠标与模型的交互,这对开发者来说十分的友好。利用url前端开发者可以直接把设计好的3d模型粘到网页上,当然这种方法对性能要求较高。我使用的是第二种代码导出方式,利用 H5 canvas 标签加载3d模型,代码如下

<canvas id="canvas3d"> </canvas>

...

import { Application } from "@splinetool/runtime";

...

mounted() {
    const canvas = document.getElementById("canvas3d");
    const app = new Application(canvas);
    app.load("https://prod.spline.design/qe0wr6Nd2LUqq1eh/scene.spline");
},

2.2 滚动效果动画

 传统的滚动条动画需要结合 js/jQuery 和 css 来实现,大致思路是通过监听滚动条滚动的高度来设置添加或删除css动画。但今年,在 CSS 规范中,推出了一个划时代的 CSS 功能。也就是 -- The @scroll-timeline at-rule,直译过来就是滚动时间线@scroll-timeline 能够设定一个动画的开始和结束由滚动容器内的滚动进度决定,而不是由时间决定。意思是,我们可以定义一个动画效果,该动画的开始和结束可以通过容器的滚动来进行控制。更多有关 @scroll-timeline 的内容,请参考下面的链接革命性创新,动画杀手锏 @scroll-timelinehttps://juejin.cn/post/7072176412706209823

 虽然 @scroll-timeline 的功能强大,但是目前此功能还是在实验阶段。目前的兼容性如下图所示,可以说是基本没法用。只有最新的Chrome ,Edge ,Opera 支持,但是默认是关闭的。需要使用的话必须得手动开启。

2.3 echarts图表的在vue项目中的使用

src/main.js:

import { createApp } from 'vue'
import App from './App.vue'
import * as echarts from 'echarts/core';
import {
    TitleComponent,
    ToolboxComponent,
    TooltipComponent,
    VisualMapComponent,
    GeoComponent,
} from 'echarts/components';
import { MapChart } from 'echarts/charts';

const app = createApp(App);

echarts.use([
    TitleComponent,
    ToolboxComponent,
    TooltipComponent,
    VisualMapComponent,
    GeoComponent,
    MapChart,
    CanvasRenderer,
]);

// echarts注入到全局属性
app.config.globalProperties.$echarts = echarts;

app.mount('#app')

把每一张图表当成一个vue组件(component),然后再在主页中引入组件

src/components/TheOlympics1.vue:

<!--
 * @Author: qduneymar
 * @Date: 2022-04-30 14:47:07
 * @LastEditors: qduneymar
 * @LastEditTime: 2022-05-07 20:26:18
 * @Description: 中国代表团历史夏季奥运会奖牌总数
-->
<template>
  <div class="echarts-box">
    <div id="myEcharts11"></div>
  </div>
</template>

<script>
import * as echarts from "echarts";
import { onMounted, onUnmounted } from "vue";

export default {
  setup() {
    /// 声明定义一下echart
    let echart = echarts;

    onMounted(() => {
      initChart();
    });

    onUnmounted(() => {
      echart.dispose;
    });

    // 基础配置一下Echarts
    function initChart() {
      let chart = echart.init(document.getElementById("myEcharts11"), "dark");

      // 把配置和数据放这里
      chart.setOption({
       title: {
          text: '中国代表团历史夏季奥运会奖牌总数',
          subtext: '(1932年~2021年)',
          left: 'center'
        },
        tooltip: {
          trigger: 'item'
        },
        legend: {
          orient: 'vertical',
          left: 'left'
        },
        series: [
          {
            name: 'Access From',
            type: 'pie',
            radius: '50%',
            data: [
              { value: 297, name: '金牌' },
              { value: 282, name: '银牌' },
              { value: 233, name: '铜牌' },
            ],
            color:['#D9D919','#c0c0c0','#B87333'],
            emphasis: {
              itemStyle: {
                shadowBlur: 10,
                shadowOffsetX: 0,
                shadowColor: 'rgba(0, 0, 0, 0.5)'
              }
            }
          }
        ]
      });

      window.onresize = function () {
        //自适应大小
        chart.resize();
      };
    }

    return { initChart };
  },
};
</script>

<style scoped>
.echarts-box {
  padding: 0;
  height: 100%;
  width: 100%;
}
#myEcharts11 {
  box-sizing: border-box;
  height: 100%;
  width: 100%;
  margin: 0 auto;
}
</style>

 src/views/IndexPage.vue:

<template>
   ...
   <div>
       <TheOlympics1></TheOlympics1>
   </div>
   ...
</template>

<script>
    import TheOlympics1 from "../components/TheOlympics1.vue";


   export default {
       data () {
           return {
           }
       },
       components:{
           TheOlympics1,
       }
   }

</script>

<style scoped>

</style>

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: Vue Echarts大屏数据展示150套是指通过使用Vue框架结合Echarts图表库来展示大屏数据的一个需求。 Vue是一个流行的JavaScript框架,用于构建用户界面。它具有简洁的语法和高效的渲染性能,使开发者能够快速构建灵活的应用程序。 Echarts是一种基于JavaScript和HTML5的数据可视化库,提供了丰富的图表类型和交互方式,使用户能够更直观地理解和分析数据。 大屏数据展示意味着将大量的数据以可视化的形式展示在屏幕上,以便用户更好地理解数据趋势和关联性。 150套表示有150种不同的数据展示方案。可能是根据不同的业务需求和数据类型,展示不同的图表类型、颜色、样式和交互效果。 开发者可以使用VueEcharts配合开发,首先通过Vue构建一个大屏数据展示的页面框架,在页面中引入Echarts图表组件。然后根据需求,在Vue中动态生成Echarts图表实例,并通过Echarts提供的API来配置图表的数据和样式,以满足不同的展示需求。 通过编写适当的业务逻辑和数据交互代码,开发者可以将150套不同的数据展示方案分别展示在大屏中。 总结来说,Vue Echarts大屏数据展示150套是指使用Vue框架结合Echarts图表库来构建一个大屏数据展示页面,并根据需求通过动态生成和配置Echarts图表实例,展示不同的数据和图表类型。这将使用户能更好地理解和分析大量的数据。 ### 回答2: VueECharts结合可以非常方便地实现大屏数据展示。大屏数据展示通常需要展示大量的数据,并以可视化的方式直观地呈现给用户。Vue提供了数据绑定和组件化的特性,使得开发大屏数据展示变得简单而高效。而ECharts是一款功能强大的数据可视化库,提供了丰富的图表类型和交互功能,能够满足各种复杂的数据展示需求。 在Vue中使用ECharts,首先需要引入ECharts的库文件,可以通过npm安装或者直接引入CDN链接。然后在Vue组件中使用ECharts的API来创建图表并配置图表的样式和数据。例如,可以创建一个基于柱状图的大屏数据展示组件,将数据传入组件实现动态展示Vue的组件化特性可以让我们将大屏数据展示拆分成多个小组件,每个组件负责展示一个特定的模块。这样可以提高代码的复用性和可维护性,方便扩展和调整。同时,Vue的数据绑定机制也可以将数据和图表同步更新,实现实时的数据展示效果。 总之,通过VueECharts的组合,我们可以轻松地实现大屏数据展示,并且能够快速响应用户的交互操作。无论是展示150套数据还是更多的数据,VueECharts都能够满足需求,并保持良好的性能和用户体验。 ### 回答3: Vue是一种用于构建用户界面的JavaScript框架,Echarts是一个基于JavaScript的开源可视化图表库。将VueEcharts结合使用可以实现大屏数据展示。在这个场景下,使用VueEcharts一起开发150套大屏数据展示意味着可以创建150个不同的大屏页面,并在每个页面上展示不同的数据。 首先,我们可以使用Vue框架创建一个基础的大屏数据展示平台。使用Vue的组件化开发方式,我们可以创建一个通用的大屏模板,包括标题、导航栏、底部等。这个模板可以被复用在所有150个大屏页面上。 接下来,我们可以使用Echarts库来创建各种图表来展示数据。Echarts提供了多种类型的图表,例如柱状图、折线图、饼图等。根据具体的需求,我们可以在每个大屏页面上使用不同类型的图表来展示对应的数据。 为了展示150套不同的数据,我们可以使用Vue的动态路由功能。通过配置不同的路由,每个路由对应一个大屏页面,并指定对应的数据源。这样,用户在访问不同的路由时,就可以看到不同的大屏页面和相应的数据。 在处理数据方面,可以使用Vue提供的数据双向绑定机制。通过与后端服务器进行数据交互,我们可以获取实时或静态的数据,并将其绑定到Echarts图表组件上。这样,当数据发生变化时,图表会自动更新。 另外,为了提高用户体验,可以通过使用Vue的异步组件加载机制,将大屏页面进行按需加载。这样页面加载速度将更快,并且用户只需等待所需页面的加载,而不是等待所有页面同时加载完成。 总而言之,使用VueEcharts可以实现大屏数据展示,并且可以创建150套不同的大屏页面来展示不同的数据。通过灵活运用VueEcharts的功能和特性,我们可以打造出一个功能强大、界面美观的大屏数据展示平台

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值