【echarts大屏】横向柱状图翻页轮询,让数据动起来!

news2024/9/26 3:31:17

想要打造震撼人心的数据可视化大屏?那么不妨尝试一下【echarts大屏】横向柱状图翻页轮询效果!通过这种方式,可以让你的数据图表生动起来,吸引用户的注意力。

在这里插入图片描述

✨ 接下来,我将为你介绍如何实现【echarts大屏】横向柱状图翻页轮询的效果。

1️⃣ 准备工作:
首先,你需要引入ECharts库,并创建一个容器元素,用于展示图表。

2️⃣ 数据准备:
根据你的需求,准备好要展示的数据。可以是实时的数据、动态变化的数据等。

3️⃣ 配置图表:
使用ECharts提供的API,配置横向柱状图的样式、坐标轴等,以及设置翻页动画效果。

4️⃣ 轮询效果实现:
通过定时器或者Vue/React等框架的数据变更触发机制,实现图表的翻页效果。可以通过改变图表的数据源或者图表的显示状态来实现轮询效果。

5️⃣ 无限循环展示:
如果想要实现无限循环的效果,可以在最后一页或者最开始一页时,切换到另一端的数据,从而实现无缝切换。

组件使用:

<div class="workload-ranking">
       <div class="workload-ranking-hand">
          <span class="publicIcon icon6"></span>
            当前班次作业量排名
      </div>
      <div class="workload-ranking-body">
          <Source :dataZoomEndValue="5"></Source>
      </div>
</div>

dataZoomEndValue说明:数据最大展示条数

vue组件完整代码:

<template>
  <div id="sou" class="sou" style="width: 100%;height: 100%" />
</template>

<script>
// 例如:import 《组件名称》 from '《组件路径》';
import * as echarts from "echarts";

export default {
  props: ["dataZoomEndValue"],
  name: "Source",
  // import引入的组件需要注入到对象中才能使用
  data() {
    // 这里存放数据
    return {
      yAxisList: "",
      seriesList: "",
      seriesList2: "",
      ListScroll: null
    };
  },
  // 监听属性 类似于data概念
  computed: {},
  // 监控data中的数据变化
  watch: {},
  // 生命周期 - 创建完成(可以访问当前this实例)
  created() {
    this.getdate();
  },
  // 生命周期 - 挂载完成(可以访问DOM元素)
  mounted() {
    // this.getSource();
  },
  beforeDestroy() {
    clearInterval(this.ListScroll);
  },
  // 方法集合
  methods: {
    getdate() {
      axios
        .get("/logistics/bulletinBoard/driverWorkloadShift/exception")
        .then(response => {
          if (response.data.status == 200) {
            let yAxisList = [];
            response.data.result.xData.forEach(item => {
              yAxisList.push(item.substr(0, item.indexOf(":")));
            });
            // const yAxisList = response.data.result.xData;
            const seriesList = response.data.result.yAxis[0].data;
            this.getSource(yAxisList, seriesList);
          }
        });
    },
    // 图表数据
    getSource(yAxisList, seriesList) {
      var myChart = echarts.init(document.getElementById("sou"));
      var dataZoomEndValue = this.dataZoomEndValue;

      const option = this.generateChartOption(yAxisList, seriesList);
      var [newYAxisList, newSeriesList] = this.groupDataByZoomValue(
        yAxisList,
        seriesList,
        dataZoomEndValue
      );

      // 首次渲染
      const YList = newYAxisList[0];
      const SList = newSeriesList[0];
      yAxisList.splice(0, yAxisList.length, ...YList);
      seriesList.splice(0, seriesList.length, ...SList);
      myChart.setOption(option);
      console.log(dataZoomEndValue, yAxisList);

      if (newYAxisList.length > 1 && newSeriesList.length > 1) {
        let indexNumber = 0;
        // 开始轮询翻页
        this.ListScroll = setInterval(() => {
          indexNumber = (indexNumber + 1) % newYAxisList.length;
          const YList = newYAxisList[indexNumber];
          const SList = newSeriesList[indexNumber];
          yAxisList.splice(0, yAxisList.length, ...YList);
          seriesList.splice(0, seriesList.length, ...SList);
          myChart.clear();
          myChart.setOption(this.generateChartOption(yAxisList, seriesList));
        }, 15000);
      }

      window.addEventListener("resize", () => {
        myChart.resize();
      });
    },

    generateChartOption(yAxisList, seriesList) {
      return {
        tooltip: {
          trigger: "axis",
          axisPointer: {
            type: "shadow"
          }
        },
        legend: {
          show: true,
          top: "3%",
          textStyle: {
            color: "#999"
          }
        },
        grid: {
          left: "3%",
          right: "4%",
          bottom: "3%",
          containLabel: true
        },
        xAxis: {
          type: "value",
          boundaryGap: [0, 0.01],
          splitLine: {
            show: true,
            lineStyle: {
              color: "#666"
            }
          },
          axisLabel: {
            show: false
          },
          show: false
        },
        yAxis: {
          type: "category",
          data: yAxisList
        },
        series: [
          {
            name: "工作量(次)",
            type: "bar",
            data: seriesList,
            itemStyle: {
              color: "#458ef4"
            },
            label: {
              color: "rgba(255, 255, 255, 1)",
              show: true,
              position: "right",
              formatter: params => {
                var value = params.value;
                return value + "次";
              }
            }
          }
        ]
      };
    },
    groupDataByZoomValue(yAxisList, seriesList, zoomValue) {
      const newYAxisList = [];
      const newSeriesList = [];

      for (let i = seriesList.length; i > 0; i -= zoomValue) {
        const startIndex = Math.max(0, i - zoomValue);
        const yAxisSlice = yAxisList.slice(startIndex, i);
        const seriesSlice = seriesList.slice(startIndex, i);

        // 检查子数组长度是否小于zoomValue,若是,则进行填充
        if (yAxisSlice.length < zoomValue) {
          const yAxisFill = Array(zoomValue - yAxisSlice.length).fill("");
          yAxisSlice.unshift(...yAxisFill);
        }
        if (seriesSlice.length < zoomValue) {
          const seriesFill = Array(zoomValue - seriesSlice.length).fill("");
          seriesSlice.unshift(...seriesFill);
        }

        newYAxisList.unshift(yAxisSlice);
        newSeriesList.unshift(seriesSlice);
      }

      // 颠倒顺序
      newYAxisList.reverse();
      newSeriesList.reverse();
      console.log(newYAxisList, newSeriesList);
      return [newYAxisList, newSeriesList];
    }
  } // 如果页面有keep-alive缓存功能,这个函数会触发
};
</script>

通过以上步骤,你就可以完成【echarts大屏】横向柱状图翻页轮询的实现了!让你的数据图表动起来,让用户眼前一亮!

标签:#echarts大屏 #横向柱状图 #数据可视化 #轮询效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1334511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对属于国家秘密的地理信息的获取、持有、提供、利用情况进行登记并长期保存,实行可追溯管理

对属于国家秘密的地理信息的获取、持有、提供、利用情况进行登记并长期保存&#xff0c;实行可追溯管理 数据记录&#xff08;包括获取、持有、提供、利用、销毁等全闭环&#xff09;

云安全资源管理定义以及实现方法

随着云计算的大力发展&#xff0c;越来越多的企业上云了。但很多企业上云之后&#xff0c;不知道怎么保障云资源安全&#xff0c;不知道怎么管理云资源&#xff0c;今天我们就来聊聊云安全资源管理定义以及实现方法。仅供参考哈&#xff01; 云安全资源管理定义 云安全资源管理…

npm的常用使用技巧

npm是一个强大的工具&#xff0c;可以帮助你管理Node.js项目中的依赖项。以下是一些有用的npm使用技巧&#xff1a; 使用npm install命令&#xff1a;这个命令可以安装项目的依赖项。如果你想安装一个特定的版本&#xff0c;你可以使用npm install <package><version…

Linux6.2、IO基础(文件系统接口)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 直接使用系统接口 fopen底层封装的系统接口为open pathname也就是文件路径&#xff0c;flags我们通过一个demo来理解。 首先我们应该了解的是位图&#xff0c;int有32个比特位&#xff0c;我们根据他的比特位是否为1来决定这…

【数据结构】字符串匹配|BF算法|KMP算法|next数组的优化

字符串匹配算法是在实际工程中经常遇到的问题&#xff0c;也是各大公司笔试面试的常考题目&#xff0c;本文主要介绍BF算法&#xff08;最好想到的算法&#xff0c;也最好实现&#xff09;和KMP算法&#xff08;最经典的&#xff09; 一、BF算法 BF算法&#xff0c;即暴力(Bru…

轻松管理固定资产,易点易动固定资产管理系统为企业开启新篇章

在现代企业运营中&#xff0c;固定资产管理是一个不可忽视的关键环节。有效地管理和维护固定资产不仅可以提升企业运营效率&#xff0c;还能最大限度地发挥资产的价值。为了满足企业对固定资产管理的需求&#xff0c;我们推出了易点易动固定资产管理系统&#xff0c;一款功能强…

网站使用https认证

随着网络的普及和依赖程度的增加&#xff0c;网站安全性问题也日益凸显。为了确保用户和网站之间的数据传输安全&#xff0c;采用HTTPS认证已经变得至关重要。 1.数据安全是首要任务 在互联网上&#xff0c;信息传输是网站运作的基础。然而&#xff0c;未加密的传输容易受到中…

嵌入式-stm32-用PWM点亮LED实现呼吸灯

一&#xff1a;知识前置 1.1、LED灯怎么才能亮&#xff1f; 答&#xff1a;LED需要低电平才能亮&#xff0c;高电平是灯灭。 1.2、LED灯为什么可以越来越亮&#xff0c;越来越暗&#xff1f; 答&#xff1a;这是用到不同占空比来实现的&#xff0c;控制LED实现呼吸灯&…

千帆起航:探索百度智能云千帆AppBuilder在AI原生应用开发中的革新之路

千帆起航&#xff1a;探索百度千帆AppBuilder在AI原生应用开发中的革新之路 1.揭开帷幕&#xff0c;大模型第二次战役 自从 ChatGPT 横空出世后&#xff0c;一石激起千层浪&#xff0c;人工智能也正在从感知理解走向生成创造&#xff0c;这是一个关键里程碑。生成式大模型完成…

Spring Cloud + Vue前后端分离-第7章 核心业务功能开发

Spring Cloud Vue前后端分离-第7章 核心业务功能开发 7-1 课程管理功能开发 课程管理页面美化 1.课程管理页面美化 demo-course.jpg 复制search.html中的部分代码 course.vue 看效果 测试一下新增修改删除效果 1.课程管理页面美化2 scoped:style下的样式只应用于当前组件…

数字人直播系统源码开发:实现电商必备的一键生成真人直播卖货

随着互联网技术的不断演进和电子商务的蓬勃发展&#xff0c;直播电商成为了一种新兴的销售模式。然而&#xff0c;传统的直播方式存在着一些问题&#xff0c;比如主播的时间和精力有限&#xff0c;无法满足大量商品的销售需求。为了解决这个问题&#xff0c;数字人直播系统应运…

2023RT-Thread开发者大会

参加了一次RT-Thread的开发者大会&#xff0c;相当有意思&#xff0c;虽然一天奔波挺累&#xff0c;但睡了半天之后简单剪了下22号的视频&#xff0c;也就有时间写自己的参会笔记了。 与openEuler社区不同&#xff0c;RT-Thread社区更专注于嵌入式&#xff0c;与硬件厂商结合…

长宁区科协常务副主席张正行一行到访深兰科技

12月22日&#xff0c;上海市长宁区科协常务副主席张正行、学会部部长洪嫣一行到访深兰科技总部&#xff0c;并与深兰科技集团董事长陈海波、深兰科技集团技术副总裁王雷博士等进行了会谈。 座谈中&#xff0c;陈海波详细介绍了深兰科技当前的企业发展及业务现状&#xff0c;并就…

WPS的JS宏实现WORD表格的首行以及整体格式设置

本文实现了在WORD文档中的表格的样式、字体的整体设置&#xff0c;以及首行的样式、字体的翻开设置。 例如一篇WORD文档&#xff0c;包含了200个表格&#xff0c;所有的表格需要设置为相同的样式&#xff1a; 字体 5号&#xff0c;方正仿宋_GB2312&#xff0c;行间距18磅&…

如何快速搭建接口自动化测试框架【附教程+源码】

1、接口测试 接口测试是对系统或组件之间的接口进行测试&#xff0c;主要是校验数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及相互逻辑依赖关系。 接口自动化相对于UI自动化来说&#xff0c;属于更底层的测试&#xff0c;这样带来的好处就是测试收益更大&#xf…

拓扑排序相关leetcode算法题

文章目录 1.课程表2.课程表II3.火星词典 1.课程表 课程表 class Solution {//进行一次拓扑排序即可 public:bool canFinish(int n, vector<vector<int>>& prerequisites) {unordered_map<int,vector<int>> edges;//使用邻接表存图vector<int…

一起玩儿物联网人工智能小车(ESP32)——14. 用ESP32的GPIO控制智能小车运动起来(二)

摘要&#xff1a;本文主要讲解如何使用Mixly实现对单一车轮的运动控制。 下面就该用程序控制我们的小车轮子转起来了。打开Mixly软件&#xff0c;然后单击顶部“文件”菜单中的“新建”功能&#xff0c;我们来开启一个新程序的开发工作。 我们的工作同样是先从最简单的开始&am…

Java内存区域与内存溢出异常

Java与C++之间有一堵由内存分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 2.1 概述 对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的“皇帝”,又是从事最基础工作的劳动人民——即拥有每一个对象的“所有权”,又…

ros2+gazebo+urdf:ros2机器人使用gazebo的urdf文件中的<gazebo>部分官网资料

原文链接SDFormat extensions to URDF (the gazebo tag) — Documentation 注意了ros2的gazebo部分已经跟ros1的gazebo部分不一样了&#xff1a; Toggle navigation SpecificationAPIDocumentationDownload Back Edit Version: 1.6 Table of C…

DRF之初识

目录 一、序列化和反序列化 【1】序列化 【2】反序列化 【3】小结 二、DRF的安装和快速使用 (1) 安装DRF&#xff1a; (2) 配置DRF&#xff1a; (3) 创建序列化器(Serializer)&#xff1a; (4) 创建视图(View)&#xff1a; (5) 配置URL路由&#xff1a; 【补充】下载…