Apache ECharts 自定义系列实现矩形中间触发Tooltip的技巧
2025-05-01 21:16:00作者:温艾琴Wonderful
echarts
Apache ECharts is a powerful, interactive charting and data visualization library for browser
在使用Apache ECharts开发数据可视化图表时,自定义系列(series)是一个非常强大的功能,它允许开发者创建高度定制化的图表类型。然而,在实现类似热力图(heatmap)的效果时,一个常见的问题是Tooltip触发位置与预期不符。
问题背景
当开发者尝试创建自定义系列时,经常会遇到Tooltip在矩形(rect)的起始边缘触发,而不是在矩形的中间位置触发。这与ECharts内置热力图的行为不同,内置热力图默认会在矩形的中心位置触发Tooltip。
解决方案
通过调整自定义系列中矩形的绘制位置,可以实现Tooltip在矩形中心触发的效果。关键在于计算矩形宽度后,将x坐标向左偏移宽度的一半:
const height = api.size([0, 1])[1];
const width = end[0] - start[0];
const rectShape = echarts.graphic.clipRectByRect(
{
x: start[0] - width / 2, // 关键调整:x坐标向左偏移宽度的一半
y: start[1] - height / 2,
width,
height,
},
{
x: params.coordSys.x!,
y: params.coordSys.y!,
width: params.coordSys.width!,
height: params.coordSys.height!,
}
);
技术原理
-
坐标系理解:ECharts中的坐标系以左上角为原点(0,0),向右为x轴正方向,向下为y轴正方向。
-
矩形定位:默认情况下,矩形的(x,y)坐标表示左上角位置。要实现中心触发,需要将绘制起点向左上方偏移半个宽度和高度。
-
裁剪处理:使用
echarts.graphic.clipRectByRect确保调整后的矩形不会超出坐标系范围,避免绘制异常。
应用场景
这种技术特别适用于:
- 创建自定义的热力图变体
- 开发时间轴上的事件标记图表
- 构建需要精确Tooltip触发的数据可视化
注意事项
- 确保坐标计算考虑了坐标系的实际尺寸和位置
- 对于动态数据,需要重新计算每个矩形的偏移量
- 在响应式设计中,需要监听resize事件并重新计算位置
通过这种简单的坐标调整,开发者可以轻松实现与内置热力图一致的Tooltip触发体验,提升用户交互的直观性和专业性。
echarts
Apache ECharts is a powerful, interactive charting and data visualization library for browser
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0239
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
JoyAI-VL-Interaction-Preview京东开源首个开源、视觉驱动的实时交互模型——它能实时监控视频流,并自主决定何时发言、保持沉默或委托任务。Jinja00
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0180
kornia🐍 空间人工智能的几何计算机视觉库Python03
PaddleParallel Distributed Deep Learning: Machine Learning Framework from Industrial Practice (『飞桨』核心框架,深度学习&机器学习高性能单机、分布式训练和跨平台部署)C++02
项目优选
收起
暂无描述
Dockerfile
786
5.14 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
898
2.08 K
Ascend Extension for PyTorch
Python
767
985
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
721
1.45 K
deepin linux kernel
C
32
16
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
471
481
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
483
180
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.13 K
1.17 K
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
2.49 K
684
昇腾LLM分布式训练框架
Python
189
240