echarts 曲线图自定义提示框

news2024/12/26 23:05:54
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>曲线图</title>
  <!-- 引入 ECharts 库 -->
  <script src="https://cdn.jsdelivr.net/npm/echarts@5.3.0/dist/echarts.min.js"></script>
  <style>
    /* 设置图表容器的大小 */
    #main {
      width: 800px;
      height: 600px;
      margin: 0 auto;
    }
  </style>
</head>

<body>
  <!-- 图表容器 -->
  <div id="main"></div>
  <script>
    // 你的 JavaScript 函数
    function updateChart () {
      var chartDom = document.getElementById('main')
      var myChart = echarts.init(chartDom)

      // 示例数据
      var jsonData = [
        { time: '2024-01-01', name: 'Series1', kongshen: 100, yongshuiliang: 50, leijifangshuiliang: 200, wendu: 25, shuiya: 1.5, CH4: 10 },
        { time: '2024-01-02', name: 'Series2', kongshen: 120, yongshuiliang: 55, leijifangshuiliang: 220, wendu: 26, shuiya: 1.6, CH4: 12 },
        { time: '2024-01-03', name: 'Series3', kongshen: 130, yongshuiliang: 60, leijifangshuiliang: 240, wendu: 27, shuiya: 1.7, CH4: 14 }
      ]

      var timeData = []
      var series = []
      var kongshenData = []
      var yongshuiliangData = []
      var leijifangshuiliangData = []
      var wenduData = []
      var shuiyaData = []
      var CH4Data = []

      for (var i = 0; i < jsonData.length; i++) {
        var item = jsonData[i]
        timeData.push(item.time)
        kongshenData.push(item.kongshen)
        yongshuiliangData.push(item.yongshuiliang)
        leijifangshuiliangData.push(item.leijifangshuiliang)
        wenduData.push(item.wendu)
        shuiyaData.push(item.shuiya)
        CH4Data.push(item.CH4)

        series.push({
          name: item.name,
          type: 'line',
          stack: 'Total',
          data: [item.kongshen, item.yongshuiliang, item.leijifangshuiliang, item.wendu, item.shuiya, item.CH4],
          lineStyle: {
            width: 4, // 设置折线宽度为4(加粗)
          }
        })
      }

      var option = {
        title: {
          // text: '名称'
        },
        tooltip: {
          trigger: 'axis',
          
          formatter: function (params) {
    var html = '';
    params.forEach(function (param) {
        var name = param.seriesName;
        var value = param.value;
        var unit = '';
        var color = param.color;

        switch (name) {
            case '孔深':
                unit = 'm';
                break;
            case '涌水量':
                unit = 'm³/h';
                break;
            case '水温':
                unit = '℃';
                break;
            case '水压':
                unit = 'MPa';
                break;
            case '累计放水量':
                unit = 'm³';
                break;
            case 'CH4':
                unit = '%';
                break;
            default:
                break;
        }

        html += '<span style="color:' + color + '">&#x25cf;</span> ' + name + ': ' + value + ' ' + unit + '<br>';
    });
    
    return html;
}


        },
        legend: {
          data: ['孔深', '涌水量', '累计放水量', '水压', '水温', 'CH4'],
          textStyle: {
            color: 'blue' // 设置图例文字颜色为白色
          },
          formatter: function (name) {
            if (name == '孔深') {
              return name + '(m)'
            } else if (name == '涌水量') {
              return name + '(m³/h)'
            } else if (name == '水温') {
              return name + '(℃)'
            } else if (name == '水压') {
              return name + '(MPa)'
            } else if (name == '累计放水量') {
              return name + '(m³)'
            } else {
              return name + '(%)'
            }
          }
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '3%',
          containLabel: true
        },
        toolbox: {
          feature: {
            saveAsImage: {}
          }
        },
        xAxis: {
          type: 'category',
          boundaryGap: false,
          data: timeData
        },
        yAxis: [
          {
            type: 'value'
          }
        ],
        series: [
          {
            name: '孔深',
            type: 'line',
            stack: 'Total',
            data: kongshenData,
            lineStyle: {
              normal: {
                width: 4, // 设置折线宽度为4(加粗)
              }
            }
          },
          {
            name: '涌水量',
            type: 'line',
            stack: 'Total',
            data: yongshuiliangData,
            lineStyle: {
              normal: {
                width: 4, // 设置折线宽度为4(加粗)
              }
            }
          },
          {
            name: '累计放水量',
            type: 'line',
            stack: 'Total',
            data: leijifangshuiliangData,
            lineStyle: {
              normal: {
                width: 4, // 设置折线宽度为4(加粗)
              }
            }
          },
          {
            name: '水压',
            type: 'line',
            data: shuiyaData,
            lineStyle: {
              normal: {
                width: 4, // 设置折线宽度为4(加粗)
              }
            }
          },
          {
            name: '水温',
            type: 'line',
            data: wenduData,
            lineStyle: {
              normal: {
                width: 4, // 设置折线宽度为4(加粗)
              }
            }
          },
          {
            name: 'CH4',
            type: 'line',
            data: CH4Data,
            lineStyle: {
              normal: {
                width: 4, // 设置折线宽度为4(加粗)
              }
            }
          }
        ]
      }

      option && myChart.setOption(option)
    }

    // 在页面加载完毕后执行函数
    window.onload = function () {
      // 调用你的函数
      updateChart()
    };
  </script>
</body>

</html>

主要代码就是

  formatter: function (params) {
            var html = ''
            params.forEach(function (param) {
              var name = param.seriesName
              var value = param.value
              var unit = ''
              var color = param.color

              switch (name) {
                case '孔深':
                  unit = 'm'
                  break
                case '涌水量':
                  unit = 'm³/h'
                  break
                case '水温':
                  unit = '℃'
                  break
                case '水压':
                  unit = 'MPa'
                  break
                case '累计放水量':
                  unit = 'm³'
                  break
                case 'CH4':
                  unit = '%'
                  break
                default:
                  break
              }

              html += '<span style="color:' + color + '">&#x25cf;</span> ' + name + ': ' + value + ' ' + unit + '<br>'
            })

            return html
          }

效果如下

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

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

相关文章

[word] word参考文献怎么对齐 #学习方法#微信#笔记

word参考文献怎么对齐 word参考文献怎么对齐&#xff1f; 未对齐的参考文献如下 全部选中参考文献内容 选中段落快捷窗口显示/隐藏编辑标记快捷方式和标号快捷方式中左对齐 选中之后参考文献又自动加了标号 把之前的角标和文字之间全部删除 完成图

黄金交易策略(Nerve Nnife.mql4):1秒救地球的第六单

一轮趋势做单&#xff0c;正常情况是5单便可以完成一轮盈利。但当开仓后快速追加5单也无法止盈的话&#xff0c;我们得找准极其苛刻的条件开出第6单&#xff0c;并指望完成利润覆盖。代码如下&#xff1a; if(count > 5 && count < 10 && isDown(small_…

JDK新特性

JDK新特性 函数式接口和Lambda 表达式Stream流操作新日期API操作其他新特性 Lambda 是一个匿名函数&#xff0c;我们可以把 Lambda表达式理解为是一段可以传递的代码&#xff08;将代码 像数据一样进行传递&#xff09;。可以写出更简洁、更 灵活的代码。作为一种更紧凑的代码…

STL - map 和 set

1、关联式容器 vector、list、deque、 forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面 存储的是元素本身 关联式容器也是用来存储数据的&#xff0c;与序列式容器不同的是&#xff0c;其里面存储的是<…

单片机与外设的交互

单片机与外设的交互是嵌入式系统中非常重要的一个基础知识点。单片机是一个集成在同一芯片上的中央处理器、存储器和输入/输出接口,它可以根据用户编写的程序与各种外部设备即外设进行交互。单片机与外设之间的交互主要通过单片机上的输入/输出口(I/O口)来实现。 I/O口的工作原…

HSM加密机原理:密钥管理和加密操作从软件层面转移到物理设备中 DUKPT 安全行业基础8

HSM加密机原理 硬件安全模块&#xff08;HSM&#xff09;是一种物理设备&#xff0c;设计用于安全地管理、处理和存储加密密钥和数字证书。HSM广泛应用于需要高安全性的场景&#xff0c;如金融服务、数据保护、企业安全以及政府和军事领域。HSM提供了一种比软件存储密钥更安全…

rsyslog远程记录系统日志

rsyslog是一个快速处理手机系统日志的开源程序&#xff0c;提供了高性能&#xff0c;安全功能和模块化设计&#xff0c;rsyslog是syslog的升级版&#xff0c;他讲多重来源输入输出转换结果到目的地&#xff0c;rsyslog被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。…

OpenCV每日函数 结构分析和形状描述符(9) ApproxPolyDP函数 拟合曲线

一、Douglas -Peucker 算法 也称为Ramer-Douglas-Peucker 算法或迭代端点拟合算法,是一种通过减少点数来平滑折线(由线性线段组成的线)的算法。简化曲线应保留原始曲线的粗略形状,但仅包含定义原始曲线的点的子集。 粗化程度由单个参数 ε 控制,该参数定义原始点和简化曲线…

【开源】JAVA+Vue.js实现森林火灾预警系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 系统基础模块2.3 烟雾传感器模块2.4 温度传感器模块2.5 历史记录模块2.6 园区数据模块 三、系统设计3.1 用例设计3.1.1 森林园区基础系统用例设计3.1.2 森林预警数据用例设计 3.2 数据库设计3.2.1 烟雾…

Oracle数据字典学习1

之前查看了几个用户的默认表空间&#xff0c;是从user_users来查看的&#xff1b; 根据资料&#xff1b; ORACLE中数据字典视图分为3大类,用前缀区别&#xff0c;分别为&#xff1a;USER&#xff0c;ALL 和 DBA&#xff1b; 许多数据字典视图包含相似的信息&#xff1b; USER_…

读书笔记之《运动改造大脑》:运动是最佳的健脑丸

《运动改造大脑》的作者是约翰•瑞迪&#xff08;John Ratey&#xff09; / 埃里克•哈格曼&#xff08;Eric Hagerman&#xff09;&#xff0c;原著名称为&#xff1a;Spark&#xff1a;the revolutionary new science of exercise and the brain&#xff0c;于 2013年出版约翰…

C语言第二十二弹---指针(六)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 指针 1. 回调函数是什么&#xff1f; 2、qsort使用举例 2.1、使用qsort函数排序整型数据 2.2 使用qsort排序结构体数据 3、qsort函数的模拟实现 总结 1. 回…

【正在更新】从零开始认识语音识别:DNN-HMM混合系统语音识别(ASR)原理

摘要 | Abstract TO-BE-FILLED 1.前言 | Introduction 近期想深入了解语音识别(ASR)中隐马尔可夫模型(HMM)和深度神经网络-隐马尔可夫(DNN-HMM)混合模型&#xff0c;但是尽管网络上有许多关于DNN-HMM的介绍&#xff0c;如李宏毅教授的《深度学习人类语言处理》[1]&#xff0c;…

Minecraft的红石教程之电梯

一.前言 我记得是上初中的时候&#xff0c;就看到了这类电梯。现在我在看现在这类电梯的相关视频&#xff0c;大多是盗用创意未能领会其中的红石运作规律&#xff0c;于是我就删繁就简写了这篇。 二.步骤 1.材料 粘性活塞&#xff0c;黏液块&#xff0c;红石&#xff0c;红…

Mac电脑清空特别大型旧文件如何一键清理?

在我们的数字生活中&#xff0c;Mac电脑常常承载着大量个人资料和重要文件。但当我们决定把自己的Mac送给亲人或朋友使用时&#xff0c;面临的首要任务便是彻底且高效地清空所有个人数据&#xff0c;以保证隐私安全。传统的删除方法虽然简单&#xff0c;但往往不能彻底清除所有…

爬虫系列-web请求全过程剖析

&#x1f308;个人主页: 会编程的果子君 ​&#x1f4ab;个人格言:“成为自己未来的主人~” 上一小节我们实现了一个网页的整体抓取工作&#xff0c;那么本小节&#xff0c;给各位好好剖析一下web请求的全部过程&#xff0c;这样有助于后面我们遇到的各种各样的网站就有了入手…

H5 带网站测速引导页源码

H5 带网站测速引导页源码 源码介绍&#xff1a;一款带网站测速功能的引导页源码 下载地址&#xff1a; https://www.changyouzuhao.cn/10717.html

X图形

1.题目 这道题是蓝桥云课上面的一道题目&#xff0c;它是2022年蓝桥杯省模拟题&#xff0c;题目难度为简单。 考察的知识点为递归。 题目链接&#xff1a;X图形 2.思路 如何理解题意&#xff1f; 蓝桥杯的题目和Leetcode题目最大的不同点在于&#xff0c;蓝桥杯的题目大部…

【大厂AI课学习笔记】【1.6 人工智能基础知识】(2)机器学习

目录 必须理解的知识点&#xff1a; 举一个草莓的例子&#xff1a; 机器学习的三个类别&#xff1a; 监督学习&#xff1a; 无监督学习&#xff1a; 强化学习&#xff1a; 更多知识背景&#xff1a; 机器学习的诞生需求 监督学习的关键技术与实现步骤 无监督学习的关…

C#计算矩形面积:通过定义结构 vs 通过继承类

目录 一、涉及到的知识点 1.结构 2.结构和类的区别 3.继承 4.使用类继承提高程序的开发效率 5.属性 &#xff08;1&#xff09;属性定义 &#xff08;2&#xff09;get访问器 &#xff08;3&#xff09;set访问器 6. 属性和字段的区别 二、实例&#xff1a;通过定义…