【ECharts系列】ECharts 鼠标悬停线格式化

news2025/2/23 20:12:14

 问题描述:

折线图有很多数据,鼠标悬停时,针对X轴,Y轴数据进行格式化,例如X的时间戳,格式化为时分秒,Y轴保留两位小时

希望效果图:

方案1:

在这个示例中,X轴依然使用时间戳,但是没有对时间戳进行格式化处理。当鼠标悬停在数据点上时,会显示引导线并在提示框中显示对应的时间戳和Y轴数值。其中,Y轴的数值会保留两位小数。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>ECharts Line Chart Example</title>
  <!-- 引入 ECharts 文件 -->
  <script src="https://cdn.jsdelivr.net/npm/echarts@5.2.2/dist/echarts.min.js"></script>
</head>
<body>
  <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
  <div id="chart" style="width: 800px;height:400px;"></div>
  <script type="text/javascript">
    // 基于准备好的 DOM,初始化 ECharts 实例
    var myChart = echarts.init(document.getElementById('chart'));

    // 指定图表的配置项和数据
    var option = {
      xAxis: {
        type: 'time',
        // 时间戳示例数据
        data: [1625260800000, 1625347200000, 1625433600000, 1625520000000, 1625606400000, 1625692800000, 1625779200000],
         axisLabel: {
                    formatter: function (value, index) {
                        var date = new Date(value);
                        return date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
                    }
                },
        axisPointer: {
                    label: {
                        show: true,
                        formatter: function(params) {
                            var date = new Date(params.value);
                            return date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds();
                        }
                    }
                }
      },
      yAxis: {
        type: 'value',
        
      },
      tooltip: {
        trigger: 'axis',
        axisPointer: {
          type: 'cross'
        },
        formatter: function(params) {
          // 将时间戳转换为Date对象
          var date = new Date(params[0].value[0]);
          // 获取时分秒数值
          var hours = date.getHours();
          var minutes = date.getMinutes();
          var seconds = date.getSeconds();
          // 将时分秒数值格式化为指定的字符串格式
          var timeString = hours + ':' + minutes + ':' + seconds;
          // 获取Y轴数值,保留两位小数
          var yValue = params[0].value[1];
          // 返回格式化后的字符串
          return '时间:' + timeString + '<br/>' + '数值:' + yValue.toFixed(2);
        }
      },
      series: [{
        data: [
          [1625260800000, 100],
                    [1625264400000, 150],
                    [1625268000000, 200],
                    [1625271600000, 250],
                    [1625275200000, 300],
                    [1625278800000, 350],
                    [1625282400000, 400],
                    [1625286000000, 450],
                    [1625289600000, 500],
                    [1625293200000, 550]
        ],
        type: 'line',
        name: 'Product A',
        smooth: true,
      }]
    };

    // 使用指定的配置项和数据显示图表
    myChart.setOption(option);
  </script>
</body>
</html>

方案2:

以下是一个完整的示例代码,将ECharts折线图的X轴时间戳格式化为时分秒,并在鼠标悬停时显示友好的引导线,同时引导线上的数据值也被格式化为时分秒:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>ECharts Line Chart Example</title>
  <!-- 引入 ECharts 文件 -->
  <script src="https://cdn.jsdelivr.net/npm/echarts@5.2.2/dist/echarts.min.js"></script>
</head>
<body>
  <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
  <div id="chart" style="width: 800px;height:400px;"></div>
  <script type="text/javascript">
    // 基于准备好的 DOM,初始化 ECharts 实例
    var myChart = echarts.init(document.getElementById('chart'));

    // 指定图表的配置项和数据
    var option = {
      xAxis: {
        type: 'time',
        // 时间戳示例数据
        data: [1625260800000, 1625347200000, 1625433600000, 1625520000000, 1625606400000, 1625692800000, 1625779200000]
      },
      yAxis: {
        type: 'value'
      },
      tooltip: {
        trigger: 'axis',
        axisPointer: {
          type: 'cross',
          label: {
            formatter: function(params) {
              // 将时间戳转换为Date对象
              var date = new Date(params.value);
              // 获取时分秒数值
              var hours = date.getHours();
              var minutes = date.getMinutes();
              var seconds = date.getSeconds();
              // 将时分秒数值格式化为指定的字符串格式
              var timeString = hours + ':' + minutes + ':' + seconds;
              return timeString;
            }
          }
        },
        formatter: function(params) {
          // 将时间戳转换为Date对象
          var date = new Date(params[0].value[0]);
          // 获取时分秒数值
          var hours = date.getHours();
          var minutes = date.getMinutes();
          var seconds = date.getSeconds();
          // 将时分秒数值格式化为指定的字符串格式
          var timeString = hours + ':' + minutes + ':' + seconds;
          // 返回格式化后的字符串
          return '时间:' + timeString + '<br/>' + '数值:' + params[0].value[1];
        }
      },
      series: [{
        data: [
          [1625260800000, 820],
          [1625347200000, 932],
          [1625433600000, 901],
          [1625520000000, 934],
          [1625606400000, 1290],
          [1625692800000, 1330],
          [1625779200000, 1320]
        ],
        type: 'line',
        name: 'Product A',
        smooth: true
      }]
    };

    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);
  </script>
</body>
</html>

在上面的代码中,将X轴的type属性设置为'time',然后将时间戳示例数据作为X轴的data属性。

在tooltip的axisPointer中,将type属性设置为'cross',表示显示十字准星指示器,label属性中的formatter回调函数用于格式化引导线对应的X值。

在callback函数中,将时间戳转换为Date对象,然后使用getHours()、getMinutes()和getSeconds()方法获取时分秒数值,最后使用字符串拼接的方式将它们组合成"时:分:秒"的字符串格式。

另外,在tooltip中添加了一个formatter回调函数,用于格式化引导线上的数据值。

在这个回调函数中,依然将时间戳转换为Date对象,然后使用getHours()、getMinutes()和getSeconds()方法获取时分秒数值,最后使用字符串拼接的方式将它们组合成"时:分:秒"的字符串格式。

同时,还在返回的字符串中添加了"数值:"前缀,用于提示引导线上的数据值。

通过类似以上示例代码的方式,可以将ECharts折线图的X轴时间戳格式化为任意指定的时间格式,并在鼠标悬停时显示友好的引导线,同时引导线上的数据值也被格式化为指定的时间格式。

图书推荐

图书名称:《前端工程化:基于Vue.js 3.0的设计与实践》

 

 

图书介绍

◆图书简介◆
本书以Vue.js的3.0版本为核心技术栈,围绕“前端工程化”和TypeScript的知识点展开讲解,根据笔者多年的前端开发和一线团队管理经验,将Vue 3的知识点按照工程师做项目的实施顺序梳理成章,一步一步帮助读者进行前端工程化和Vue 3的开发。

从前端工程化开始到TypeScript语言的学习,再到使用TypeScript开发Vue 3项目,通过循序渐进的学习过程提升读者在前端工程化领域的实战能力。
本书大部分知识点都搭配了通俗易懂、可实现的代码案例,读者扫描封底的二维码可获得随书附赠的源代码等资源。本书适合计算机前端开发技术人员、前端技术团队管理人员和相关专业的在校大学生阅读。

◆名人推荐◆

网易游戏社区原前端负责人 黄通

本书系统地介绍了前端工程化开发中的各种技术,并以流行框架 Vue.js 3.0 作为技术栈,从知识讲解到实践运用,再到实际问题的解决,引导读者掌握基于 Vue.js 3.0 的前端开发技术。

红迅软件研发经理 朱伟聪

本书从 0 到 1 ,带你从前端工程化的基础概念到动手实操,再到流行框架 Vue.js 全新 3.0 版本的学习,不但可以学习框架的知识,更能明白在哪用、怎么用,可以说是前端同学的必备案边读物。

顺丰科技前产品经理、中国设计智造大奖获得者、独立开发者 吴庸
本书清晰地介绍了前端工程化的发展变化,以及从基础的入门到框架的实践,还对当下流行的技术栈组合进行了科普和运用场景分析,不仅适合前端工程师阅读,对于产品经理来说,也是值得一看的。产品经理了解前端技术发展带来的优势,设计的产品会更有竞争力。

等不及的小伙伴可以先睹为快:前端工程化

 参与方式 

图书数量:本次送出 2 本   !!!⭐️⭐️⭐️
活动时间:截止到 2023-07-11 12:00:00

抽奖方式:

评论区随机抽取

参与方式:

  • 对文章进行:点赞、收藏,评论

中奖名单 

🍓🍓 获奖名单🍓🍓

 中奖名单:请关注博主动态

名单公布时间:2023-07-11 下午

 

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

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

相关文章

指针进阶(二)

目录 函数指针数组 指向函数指针数组的指针 回调函数 回调函数模拟实现qsort&#xff08;快速排序&#xff09; 整型数组的排序 结构题排序 按年龄排序 按名字排序 模拟实现qsort函数&#xff08;冒泡排序&#xff09; 函数指针数组 数组是一个存放相同类型数据的存储空…

【Linux】gcc/g++的使用 自动化构建工具make/makefile的使用

一.gcc的使用 在学习C语言时&#xff0c;我们了解了预处理阶段要做的事&#xff1a;->预处理 这其中会经历两个阶段&#xff1a;编译和链接 而编译又分为三个阶段&#xff1a;预编译&#xff0c;编译&#xff0c;汇编 通过不同的选项&#xff0c;可以让gcc停在以上相应的阶段…

ArcGis Pro如何通过C#进行插件开发?

文章目录 0.引言1.开发工具准备2.VS&#xff08;C#&#xff09;创建ArcGIS Pro模块加载项3.编译并使用ArcGis Pro插件 0.引言 ArcGIS Pro插件&#xff08;Add-ins&#xff09;可以让用户更加容易的自定义和扩展ArcGIS Pro应用程序&#xff0c;它创建一系列自定义工具提供了一个…

ISO文件boot、dvd、minimal的区别

在centos的下载中&#xff0c;有分为boot、dvd、minimal的iso文件&#xff0c;那么他们之间有什么区别呢&#xff1f; boot.iso 这个版本大小不会超过1G ,只有最基本的启动引导等内容&#xff0c;各类包均需从线上下载&#xff0c;需要快速安装且有可靠网络的前提下&#xff0c…

linux中的数据库

目录 1.安装MySQL 2.创建数据库 3.删除数据库 4.查询创建数据库的语句 5使用数据库的语句 6.查询当前默认的数据库 7.查询使用的编码方式和校验规则 8.创建表的语句 9.表的物理存储结构 10.表的数据类型 11.总结 引言&#xff1a; 数据库是现代应用开发中不可或缺的组…

获取视频 RTMP 推流web播放

工作需要研究下市面上显示实时视频方案。这里介绍下RTMP协议。 需求获取USB摄像头&#xff0c;手机谁摄像头。显示到web网页上。 一、 采集摄像头 这个使用opencvSharp来采集&#xff1a; nuget: var task Task.Run(() >{var capture new VideoCapture(0);VideoCaptur…

PHP实战开发25-电商网站系统缓存设计方案系统讲述

文章目录 一、前言-缓存的作用1.1 提高性能1.2 减轻服务端压力1.3 减少网络流量1.4 改善用户体验1.5 支持离线访问1.6 降低数据传输成本 二、浏览器缓存2.1 强缓存2.2 协商缓存 三、CDN 缓存3.1 使用CDN缓存的好处3.1.1 加速网站加载时间3.1.2 节省服务器带宽3.1.3 提高可用性和…

快速计算多项式相乘系数 FFT快速傅里叶变换

快速计算多项式相乘系数 FFT快速傅里叶变换 快速傅里叶变换(FFT)——有史以来最巧妙的算法&#xff1f; 正常求两个多项式乘积 A ( x ) ∑ i 0 n A i x i , B ( x ) ∑ i 0 n B i x i C ( x ) ∑ i 0 n ∑ j 0 n A i B j x i j A(x)\sum_{i0}^{n}{A_ix^i},B(x)\sum_{…

Java多线程基础-11:工厂模式及代码案例之线程池

在Java中&#xff0c;xx池的概念是很常见的&#xff0c;比如之前遇到过的常量池、数据库连接池等等。 线程池是一种常用的多线程处理方式&#xff0c;它可以重复利用已创建的线程&#xff0c;从而减少线程的创建和销毁开销&#xff0c;并提高程序的性能。 通俗来说&#xff…

【Windows】Redis集群部署

集群是如何进行工作的 Redis采用哈希槽来处理数据与节点之间的映射关系&#xff0c;一个集群共有16384 个哈希槽&#xff0c;每个key通过 CRC16算法计算出一个16bit的值&#xff0c;再对16384取模&#xff0c;得到对应的哈希槽&#xff0c;集群通过维护哈希槽与节点的关系来得…

flutter聊天界面-Text富文本表情emoji、url、号码展示

flutter聊天界面-Text富文本表情emoji、url、号码展示 Text富文本表情emoji展示&#xff0c;主要通过实现Text.rich展示文本、emoji、自定义表情、URL等 一、Text及TextSpan Text用于显示简单样式文本 TextSpan它代表文本的一个“片段”&#xff0c;不同“片段”可按照不同的…

Verilog学习笔记2:反相器

代码&#xff1a; //反相器 timescale 1ns/10ps module inv( A,y); input A; output y; assign y~A; endmodule //testbench module inv_tb;reg A; wire YY;inv inv(.A(A),.y(YY));initial beginA<0;#10 A<1;#10 A<0; #10 A<1;#10 A<0; #10 A<1;#10 A<0;…

从小白到大神之路之学习运维第54天--------ELK日志收集分析

第三阶段基础 时 间&#xff1a;2023年7月6日 地 点&#xff1a;2304教室 授课人&#xff1a;李凤海 参加人&#xff1a;全班人员 内 容&#xff1a; ELK技术堆栈 目录 服务器设置&#xff1a; 部署elasticsearch集群&#xff1a; 配置elasticsearch集群&#xff…

怎样寻找SEO服务商,需要注意那些问题?

网上提供SEO服务的公司或个人多如牛毛&#xff0c;随便在搜索引擎上搜索一下&#xff0c;成千上万的公司就在眼前。大部分网站设计公司也兼职SEO服务&#xff0c;寻找合适的SEO服务商并不简单&#xff0c;鉴别合格的SEO服务商是关键。 1、确定外包任务 如果没有SEO团队&…

C++类相关概念

1. 函数形参默认值 &#xff08;1&#xff09; 建议函数&#xff08;不仅仅是构造函数&#xff09;形参默认值只在函数声明中指定&#xff1b; &#xff08;函数声明和定义写在同一个文件中&#xff0c;则函数声明、定义两者之一或两者都可指定形参默认值&#xff0c;两者都指定…

mybati执行流程源码分析

MyBatis执行流程源码分析 前言 由于之前写过关于mybatis源码的文章,但是感觉还是不够细致,不够完善.没有把一些具体的流程应用写下来,至此又写了一篇.内容可能比较长,希望大家可以打开源码跟着这篇文章一起看源码保证可以收获许多. 1.mybatis基础开发流程 1.引入mybatis相关…

短视频去水印小帮手微信小程序源码带后台

短视频去水印小帮手微信​小程序源码​带后台&#xff0c;短视频去水印系列教程服务端源码。 php版&#xff0c;这里不过多介绍&#xff0c;我假设您有基本的编码基础&#xff0c;并熟悉php语言及laravel框架。

Topaz Gigapixel AI v6 人工智能图像放大

其他软件或插件依赖于插值算法来放大图像&#xff0c;Topaz Gigapixel AI 则与众不同&#xff0c;它使用最先进的深度学习技术来扩大和增强图像。 它通过神经网络分析了数百万张照片&#xff0c;从而了解了不同的照片在放大时细节是如何损失的&#xff0c;以及如何为图像增强和…

四十三、贪心——Huffman树、排序不等式

算法主要内容 一、Huffman树1、题目内容——合并果子2、算法思路&#xff08;1&#xff09;“合并果子”中的Huffman树&#xff08;2&#xff09;算法步骤&#xff08;3&#xff09;状态转移 3、题解 二、排序不等式1、题目内容——排队打水2、算法思路&#xff08;1&#xff0…

【MySQL】数据库基础概念

文章目录 前言连接服务器什么是数据库&#xff1f;MySQL和MySQLdLinux中如何看到数据库文件SQL语句分类存储引擎 前言 今天继续讲解MySQL相关内容&#xff0c;本期主要讲解数据库的基础概念&#xff0c;方便后续学习数据库。 连接服务器 mysql -h [ip] -P [port] -u [root] …