echarts中横坐标显示为time,使用手册

news/2024/7/23 8:54:25 标签: echarts, javascript, ecmascript

需求:

  • 后端传递(两段数据,不同时间间隔)的24h实时数据,前端需要根据24小时时间展示,要求:x轴为0-24h,每个两小时一个刻度

  • 误区:

    1. 刚开始通过二维数据的形式秒点(data:[[x, y],[x, y]]), 因为是两组数据的横纵坐标不一样,所有没法固定x轴;
    2. 采用组1和组2的x轴数据合并,设置间隔展示, 不同组x轴没有的数据就置null;
    3. 最后数据是展示出来了,但是x轴数据不符合设计的要求,,(陷入困局)
  • 解决办法:

    echarts中x轴type为时间轴, (看官网的时候有点印象,没用过。。。。在同事的帮忙下get到了)
    在这里插入图片描述

    1. series.data中x轴的选取 (本文使用的是字符串形式的,比较方便) (使用了moment.js)
    2. xAxis中设置24h的格式设置,最后一个值貌似默认为00:00, 可以axisLabel中修改, 最大最小值的设置,interval设置;
    3. 上述知道我们要的格式了,接下来处理后端给的数据为我们想要的即可。

代码如下

    initChart() {
	// 后端传递的数据格式1
      const num1 = [
        {
          value: "100",
          time: "12.00.00",
        },
        {
          value: "200",
          time: "13.00.00",
        },
        {
          value: "300",
          time: "14.00.00",
        },
      ];

	// 后端传递的数据格式2
      const num2 = {
        "0.0": 22,
        12.34: 45,
        "16.23.34": 235,
      };

	// 格式1处理
      let aa = num1.reduce((acc, item, index) => {
        let time =
          this.$moment().format("YYYY-MM-DD") +
          " " +
          item.time.split(".").join(":");
        acc.push([time, item.value]);
        return acc;
      }, []);

   	// 格式2处理
     let bb =  Object.entries(num2).map((item) => {
        item[0] =
          this.$moment().format("YYYY-MM-DD") +
          ` ` +
          item[0].split(".").join(":");
        return item;
      });


      this.myChart = this.$echarts.init(this.$refs.chart); // echarts容器实例化

      let min = `${this.$moment().format("YYYY-MM-DD")} 00:00:00`;
      let max = `${this.$moment().add(1, "day").format("YYYY-MM-DD")} 00:00:00`;

      let initOption = {
        xAxis: {
          type: "time",
          min,
          max,
          splitNumber: 10,
          axisLabel: {
            //  坐标轴显示最大最小值
            show: true,
            showMaxLabel: true,
            showMinLabel: true,
            formatter: (val, index) => {
              if (index == 13) {
                return "24";
              } else {
                return "{HH}";
              }
            },
          },
        },
        yAxis: {
          type: "value",
        },
        series: [
          {
            type: "line",
            data: aa
          },
          {
            type: "line",
            data: bb
          },
        ],
      };

      this.myChart.setOption(initOption);
    },
  },
};

在这里插入图片描述

以上仅供参考!


http://www.niftyadmin.cn/n/251197.html

相关文章

ChatGPT会凉吗?巴菲特、马斯克呼吁暂停

ChatGPT 迅速“风靡”全球,无疑成为了人工智能领域备受瞩目的“明星产品”,然而随着 ChatGPT 应用越来越广泛,陆续爆出被用于学术造假、制作黑客武器以及泄露用户敏感聊天信息等一系列负面新闻。至此,社会开始重新审视类似 ChatGP…

gpt写文章批量写文章-gpt3中文生成教程

怎么用gpt写文章批量写文章 批量写作文章是很多网站、营销人员、编辑等需要的重要任务,GPT可以帮助您快速生成大量自然、通顺的文章。下面是一个简单的步骤介绍,告诉您如何使用GPT批量写作文章。 步骤1:选择好训练模型 首先,选…

linux-01-基础回顾

文章目录 Linux-Day01课程内容1. 前言1.1 什么是Linux1.2 为什么要学Linux1.3 学完Linux能干什么 2. Linux简介2.1 主流操作系统2.2 Linux发展历史2.3 Linux系统版本 3. Linux安装3.1 安装方式介绍3.2 安装VMware3.3 安装Linux TODO3.4 网卡设置3.5 安装SSH连接工具3.5.1 SSH连…

ChatGPT体验:关于BroadcastReceiver中handler的使用

问 答 评 android的BroadcastReceiver中怎么调用handler 在 BroadcastReceiver 中,不能直接更新 UI 或者执行耗时操作,因为 BroadcastReceiver 运行在主线程中,如果在该线程中执行耗时操作,会导致应用无响应(ANR&#…

算法套路十二——回溯法之排列型回溯

算法套路十二——回溯法之排列型回溯 该节是在第十节回溯法之子集型回溯的基础上进行描写,组合型回溯会在子集型回溯的基础上判断所选子集是否符合组合要求, 故请首先阅读第十节算法套路十——回溯法之子集型回溯 算法示例一:LeetCode46. 全…

C++ 互斥锁原理以及实际使用介绍

兄弟姐妹们,我又回来了,今天带来实际开发中都需要使用的互斥锁的内容,主要聊一聊如何使用互斥锁以及都有哪几种方式实现互斥锁。实现互斥,可以有以下几种方式:互斥量(Mutex)、递归互斥量&#x…

synchronized原理:

vm中每个对象都会有一个监视器Monitor,监视器和对象一起创建、销毁。监视器相当于一个用来监视这些线程进入的特殊房间,其义务是保证(同一时间)只有一个线程可以访问被保护的临界区代码块。每一个锁都对应一个monitor对象&#xf…

掌握虚拟专用网络配置

目录 一、防火墙的IPSEC VPN 二、DSVPN 一、防火墙的IPSEC VPN 总体拓扑如下:实现PC间的加密通信。 FW1的配置:划分接口配置地址。 定义感兴趣流: 注:什么是感兴趣流?答:感兴趣流是VPN的术语&#xff0…