echart 折线图tooltip

news2024/11/18 9:41:13

运行结果

代码

import { truncate, merge } from 'lodash';
import { getBasePieOptions, getTooltipFormatter } from "*/money/utils";

const colorArray = ['#1F8BFF', '#EDBE75', '#26E3F0', '#AF8FFF', '#61DDAA', '#FD996A', '#8367E0', '#1AAF87']

export function getLineOptions() {
  return {
    color: colorArray,
    tooltip: {
      trigger: 'axis',
      backgroundColor: 'rgba(244, 247, 252, 0.6)',
      borderRadius: 4,
      padding: [8, 8],
      confine: true,
      formatter: (params) => {
        let innerDivs = params.map((item, index) => {
          return `
            <div style="display: flex;align-items: center;justify-content: flex-start;background-color: rgba(255, 255, 255, 0.9);margin:5px 0; padding: 8px; border-radius: 4px;">
                <span style="display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:${item.color};"></span>
                <span style="font-family: Source Han Sans CN;color: #666666;text-align: left;margin-right:50px;letter-spacing: 0px;line-height: 20px;font-size: 12px;font-weight: normal;">
                    ${item.seriesName}
                </span>
                <span style="margin-left: auto; font-family: Source Han Sans CN;color: #333333;letter-spacing: 0px;line-height: 20px;font-size: 12px;font-weight: normal;">
                    ${item.value}
                </span>
            </div>
        `;
        }).join('');
        let res = `<div>
                  ${params[0].name}
                  ${innerDivs}
                </div>`
        return res
      }
    },
    legend: {
      itemHeight: 12,
      itemWidth: 12,
      data: ['结算金额', '收票金额', '实际支付', '剩余应付款'],
      icon: 'circle',
      textStyle: {
        fontSize: 14,
        height: 12,
        rich: {
          a: {
            verticalAlign: 'middle',
          },
        }
      },

    },
    grid: {
      left: '1%',
      right: '2%',
      bottom: '8%',
      top: '10%',
      containLabel: true
    },
    xAxis: {
      type: 'category',
      axisTick: {
        show: false  // 设置为false以隐藏Y轴的刻度线
      },
      axisLine: {
        lineStyle: {
          color: 'rgba(0, 0, 0, 0.6)',  // 设置轴线的颜色(可选)
          width: 2  // 设置轴线的粗细
        }
      },
      boundaryGap: true,
      data: ['第一期', '第二期', '第三期', '第四期', '第五期', '第六期', '第七期', '第八期']
    },
    yAxis: {
      type: 'value',
      splitLine: {
        lineStyle: {
          type: 'dashed'
        }
      }
    },
    series: [
      {
        name: '结算金额',
        type: 'line',
        smooth: true,
        symbol: 'circle',   //将小圆点改成实心 不写symbol默认空心
        symbolSize: 5,    //小圆点的大小
        data: [120, 132, 101, 134, 90, 230, 210, 200]
      },
      {
        name: '收票金额',
        type: 'line',
        smooth: true,
        symbol: 'circle',   //将小圆点改成实心 不写symbol默认空心
        symbolSize: 5,    //小圆点的大小
        data: [220, 182, 191, 234, 290, 330, 310, 300]
      },
      {
        name: '实际支付',
        type: 'line',
        smooth: true,
        symbol: 'circle',   //将小圆点改成实心 不写symbol默认空心
        symbolSize: 5,    //小圆点的大小
        data: [150, 232, 201, 154, 190, 330, 410, 400]
      },
      {
        name: '剩余应付款',
        type: 'line',
        smooth: true,
        symbol: 'circle',   //将小圆点改成实心 不写symbol默认空心
        symbolSize: 5,    //小圆点的大小
        data: [320, 332, 301, 334, 390, 330, 320, 280]
      }
    ]
  }

}
export function getTooltipFormatter(color, tips) {
    return `
                <div style="display: flex;align-items: center;justify-content: flex-start;background-color: rgba(255, 255, 255, 0.9); padding: 8px; border-radius: 4px;">
                    <span style="display: inline-block; margin-right: 5px; width: 10px; height: 10px; border-radius: 50%;background-color: ${color}';"></span>
                    <span style="font-family: Source Han Sans CN;color: #666666;text-align: left;margin-right:10px;letter-spacing: 0px;line-height: 20px;font-size: 12px;font-weight: normal;">
                        ${tips[0]}
                    </span>
                    <span style="margin-left: auto; font-family: Source Han Sans CN;color: #333333;letter-spacing: 0px;line-height: 20px;font-size: 12px;font-weight: normal;">
                        ${tips[1]}
                    </span>
                </div>
            `
}


// 获取饼图配置
export function getBasePieOptions() {
    return {
        tooltip: {
            trigger: 'item',
            extraCssText: 'border-radius: 6px;background: linear-gradient(314deg, rgba(253, 254, 255, 0.6) -6%, rgba(244, 247, 252, 0.6) 85%);backdrop-filter: blur(10px);box-shadow: 0px 10px 20px 0px rgba(167, 200, 255, 0.5),inset 0px -2px 12px 0px rgba(229, 237, 250, 0.5),inset 0px 2px 6px 0px rgba(229, 237, 250, 0.9);',
        },
        legend: {
            type: 'scroll',
            orient: 'vertical',
            icon: 'circle',
            itemGap: 14,
            itemWidth: 12,
            itemHeight: 12,
            // selectedMode: false,
            textStyle: {
                overflow: 'hidden',
                textOverflow: 'ellipsis',
                whiteSpace: 'nowrap',
                rich: {
                    a: {
                        fontSize: 12,
                        color: '#666',
                        lineHeight: 15,
                        fontWeight: 500,
                        verticalAlign: 'center'
                    },
                    b: {
                        fontSize: 12,
                        color: '#666',
                        fontWeight: 500,
                        lineHeight: 15,
                        verticalAlign: 'center'
                    },
                    c: {
                        fontSize: 12,
                        color: '#666',
                        fontWeight: 500,
                        lineHeight: 15,
                        verticalAlign: 'center'
                    },
                    d: {
                        fontSize: 12,
                        color: '#666',
                        fontWeight: 500,
                        lineHeight: 15,
                        verticalAlign: 'center'
                    },
                    e: {
                        fontSize: 12,
                        color: '#666',
                        fontWeight: 500,
                        lineHeight: 15,
                        verticalAlign: 'center'
                    }
                }
            },
        },
        baseSeries: {
            name: 'pie',
            type: 'pie',
            radius: ['35%', '50%'],
            legendHoverLink: false,
            label: {
                show: false,
                position: 'center',
            },
            emphasis: {
                label: {
                    show: true,
                    fontFamily: 'Source Han Sans CN',
                    rich: {
                        a: {
                            fontSize: 14,
                            color: '#333',
                            lineHeight: 26,
                            fontWeight: 400,
                            verticalAlign: 'center'
                        },
                        b: {
                            fontSize: 14,
                            color: '#333',
                            lineHeight: 26,
                            fontWeight: 400,
                            verticalAlign: 'center'
                        },
                        c: {
                            fontSize: 14,
                            color: '#333',
                            lineHeight: 26,
                            fontWeight: 400,
                            verticalAlign: 'center'
                        },
                        d: {
                            fontSize: 14,
                            color: '#333',
                            lineHeight: 26,
                            fontWeight: 400,
                            verticalAlign: 'center'
                        },
                        e: {
                            fontSize: 14,
                            color: '#333',
                            lineHeight: 26,
                            fontWeight: 400,
                            verticalAlign: 'center'
                        },
                    }
                }
            },
            labelLine: {
                show: true
            },
            avoidLabelOverlap: false,
        }
    }
}

// 增强饼图功能
export function emphasizePieFunction(chartInstance, data, {
    enableLoop,
    interval,
    immediate
}) {
    // 初始化索引
    chartInstance.currentIndex = 0;
    chartInstance.seriesIndex = 0;

    chartInstance.on('mouseover', (e) => {
        if (enableLoop) {
            // 鼠标悬浮于饼图时清除轮播,并展示悬浮块的信息
            clearInterval(chartInstance.timer)
            chartInstance.timer = null
        }
        chartInstance.dispatchAction({
            type: 'downplay',
            seriesIndex: 0,
            dataIndex: chartInstance.currentIndex
        })
        if (e.dataIndex === chartInstance.currentIndex) {
            chartInstance.dispatchAction({
                type: 'highlight', // 启动高亮
                seriesIndex: 0,
                dataIndex: chartInstance.currentIndex
            })
        }
        chartInstance.currentIndex = e.dataIndex
    })
    chartInstance.on('mouseout', (e) => {
        clearInterval(chartInstance.timer)
        if (enableLoop) autoTime()
    })

    function autoTime() {
        chartInstance.dispatchAction({
            type: 'highlight', // 启动高亮
            seriesIndex: chartInstance.seriesIndex,
            dataIndex: chartInstance.currentIndex
        })
        chartInstance.timer = setInterval(() => {
            chartInstance.dispatchAction({
                type: 'downplay', // 关闭高亮
                seriesIndex: 0,
                dataIndex: chartInstance.currentIndex
            })
            chartInstance.currentIndex++
            if (chartInstance.currentIndex === data.length) {
                chartInstance.currentIndex = 0
            }
            chartInstance.dispatchAction({
                type: 'highlight', // 启动高亮
                seriesIndex: 0,
                dataIndex: chartInstance.currentIndex
            })
        }, interval)
    }

    if (immediate) autoTime();
}


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

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

相关文章

大数据运维学习笔记之Ambari——筑梦之路

原则&#xff1a;分布式存储和分布式计算分开 今天就到这里啦。

以色列人Andi Gutmans开发的php zend

虽然目前php语言不行了【相关的文章前几年已经有人发过】&#xff0c;但这不是重点&#xff0c;重点是zend引擎的东西具有极大的技术价值&#xff0c;负责zend引擎实现的大佬都现在差不多都是40&#xff0c;50岁左右了&#xff0c;从1997&#xff0c;1998&#xff0c;2000到202…

记录centos中操作(查找、结束、批量)进程以及crontab定时写法的知识

环境&#xff1a;vps&#xff0c;centos7&#xff0c;python3。 近期写了个python程序&#xff0c;用青龙面板在centos上运行。程序中有while无限循环&#xff0c;但是我在青龙中设置了定时任务&#xff08;每隔半小时运行一次&#xff09;&#xff0c;于是造成了进程中有多个…

一个用Java编写的屏幕测距工具,包括游戏地图测量功能

该程序提供了一个简单便捷的方式&#xff0c;在屏幕上测量距离&#xff0c;包括游戏地图分析在内。它允许用户准确确定屏幕上两点之间的距离&#xff0c;帮助游戏过程中的战略规划、资源管理和决策制定。 特点&#xff1a; 简单易用的界面&#xff1a;直观的控制使测量距离变得…

C++的红黑树

目录 基本概念 插入结点的颜色 判断性质是否破坏 调整方式 u为g的右孩子 u存在且为红 u存在且为黑 u不存在 结论 红黑树结点定义 代码实现 基本概念 1、红黑树是一种特殊的二叉搜索树&#xff0c;每个结点会增加一个存储位表示结点的颜色&#xff08;红或黑&#x…

如何将老板的游戏机接入阿里云自建K8S跑大模型(下)- 安装nvidia/gpu-operator支持GPU在容器中共享

文章目录 安装nvidia/gpu-operator支持GPU在容器中共享 安装nvidia/gpu-operator支持GPU在容器中共享 安装 nvidia/gpu-operator遇到两个问题&#xff1a; 由于我们都懂的某个原因&#xff0c;导致某些镜像一直现在不成功。 解决办法&#xff0c;准备一个&#x1fa9c;&#…

如何理解kmp的套娃式算法啊?

概念 KMP算法&#xff0c;全称Knuth Morris Pratt算法 。文章大部分内容出自《数据结构与算法之美》 核心思想 假设主串是a&#xff0c;模式串是b 在模式串与主串匹配的过程中&#xff0c;当遇到不可匹配的字符的时候&#xff0c;对已经对比过的字符&#xff0c;是否能找到…

FME学习之旅---day27

我们付出一些成本&#xff0c;时间的或者其他&#xff0c;最终总能收获一些什么。 教程&#xff1a;Excel 入门 查看和检查 Excel 数据 1.读模块读取EXCEL文件 2.对源数据进行预览 Excel Reader 参数 |将 Excel 转换为 CSV 阅读 2020 年和平均值工作表&#xff0c;然后计算降…

运行Android项目时,提示错误: 程序包javax.annotation.processing不存在

今天在运行项目时提示错误: 错误: 程序包javax.annotation.processing不存在 import javax.annotation.processing.Generated; 最后是修改了Android Studio的JDK的路径修改为你安装的JDK路径&#xff0c;完成的修复&#xff1a;

thinkphp 多条件查询 不起作用 = like

不起作用的代码&#xff1a; &#xff08; where([category_id > $item[id]]) 没起作用 &#xff09; 传递参数 $model->where(product_name, like, "%$productName%") 不起作用 public function cateProductPage() {$builder new Builder(new CategoryMod…

基于transformers框架实践Bert系列4-文本相似度

本系列用于Bert模型实践实际场景&#xff0c;分别包括分类器、命名实体识别、选择题、文本摘要等等。&#xff08;关于Bert的结构和详细这里就不做讲解&#xff0c;但了解Bert的基本结构是做实践的基础&#xff0c;因此看本系列之前&#xff0c;最好了解一下transformers和Bert…

利用神经网络学习语言(一)——自然语言处理的基本要素

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下&#xff1a;regression2chatgpt/ch10_rnn/tokenizer.ipynb 本系列文章将深入探讨一种应用广泛的神经…

hcia datacom学习(8):静态NAT、动态NAT、NAPT、Easy IP、NAT server

1.私网地址 在现实环境中&#xff0c;企业、家庭使用的网络是私网地址&#xff08;内网&#xff09;&#xff0c;运营商维护的网络则是公网地址&#xff08;外网&#xff09;。私网地址是在局域网&#xff08;LAN&#xff09;内使用的&#xff0c;因此无法被路由&#xff0c;不…

计算机毕业设计 | springboot药品库存追踪与管理系统 药店管理(附源码)

1&#xff0c;绪论 1.1 背景调研 如今药品调价频繁&#xff0c;且品种繁多&#xff0c;增加了药品销售定价的难度。药品来货验收登记中的审查有效期环节容易出错&#xff0c;错收过期或有效期不足的药品。 手工模式下的药品库存难以及时掌握&#xff0c;虽然采取了每日进行缺…

5.23.1 深度学习在乳腺癌成像中的应用

乳腺成像在早期发现乳腺癌以及在治疗期间监测和评估乳腺癌方面发挥着重要作用。最常用的乳腺成像方式是数字乳房X线摄影、数字乳腺断层合成、超声和磁共振成像。 传统的 CAD 系统基于传统的机器学习 (ML) 技术&#xff1b;预定义&#xff08;手工制作&#xff09;的特征是系统…

元器件基础学习笔记——电感的分类及主要参数

一、电感的分类 电感器是一种电子元件&#xff0c;它能够将电能转化为磁能并储存起来。电感器的分类方法有很多&#xff0c;可以根据用途、形状、结构等不同的标准进行划分。 分类依据类型备注电感值固定电感固定线圈可变电感改变磁芯的饱和度用途高频电感绕线型&#xff0c;积…

Nest的test中的best是Jest框架

Nest的test中的best是Jest框架 前言 花了3天时间给自己之前做的一个小系统基本补完了单元测试&#xff0c;趁此机会>脑袋里对于单元测试的知识还算热乎&#xff0c;来输出一篇比较详细的关于单元测试的文章&#xff0c;以梳理知识&#xff0c;融汇贯通&#xff1b;如果对你…

配置旁挂二层组网直接转发示例(命令行)

业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff0c;不影响用户的业务使用。 组网需求 AC组网方式&#xff1a;旁挂二层组网。DHCP部署方式&#xff1a; AC作为DHCP服务器为AP分配IP地址。汇聚交换机SwitchB作…

vue小记——小组件(1)

代码&#xff1a; <template><div><el-steps :active"active" finish-status"success" simple><el-step title"数据导入"><i class"fa fa-cloud-upload fa-icon-custom" slot"icon"></i…

Docker搭建mysql性能测试环境

OpenEuler使用Docker搭建mysql性能测试环境 一、安装Docker二、docker安装mysql三、测试mysql连接 一、安装Docker 建立源文件vim /etc/yum.repos.d/docker-ce.repo增加内容[docker-ce-stable] nameDocker CE Stable - $basearch baseurlhttps://repo.huaweicloud.com/docker…