G2 icon indicating copy to clipboard operation
G2 copied to clipboard

[Bug]: 弹性条形图 tooltip 拾取错误

Open BQXBQX opened this issue 8 months ago • 8 comments

Describe the bug / 问题描述

官网弹性条形图

Image

当鼠标放到 德国 英国 法国的右半边 rect 时,tootip 拾取错误。

Reproduction link / 复现链接

https://g2.antv.antgroup.com/zh/examples/general/interval/#bar-flex

Steps to Reproduce the Bug or Issue / 重现步骤

当鼠标放到 德国 英国 法国的右半边 rect 时,tootip 拾取错误。

Version / 版本

🆕 5.x

OS / 操作系统

  • [x] macOS
  • [ ] Windows
  • [ ] Linux
  • [ ] Others / 其他

Browser / 浏览器

  • [x] Chrome
  • [ ] Edge
  • [ ] Firefox
  • [ ] Safari (Limited support / 有限支持)
  • [ ] IE (Nonsupport / 不支持)
  • [ ] Others / 其他

BQXBQX avatar Mar 28 '25 16:03 BQXBQX

感觉可能和之前的 tooltip 修改有关系,这个图的 tooltip 拾取需要走图形拾取,而不是数据的拾取。

hustcc avatar Mar 29 '25 00:03 hustcc

Image 是新的问题导致的,当 rect 的长度每个 item 不想等时,getBandWidth 方法错误,应该传入正确的 xDomain 才能拿到正确的宽度,现在没有传入 props,所以只拿到第一个数据的 bandwidth 作为通用的 bandwidth。

BQXBQX avatar Mar 29 '25 17:03 BQXBQX

related: #6516 对于flex转换后的tooltip拾取的时候要做特殊处理,不能按等步长处理。

interstellarmt avatar Mar 31 '25 06:03 interstellarmt

这个 tooltip 怎么不是使用图形去拾取?数学计算去拾取只在一些场景开启,比如:在柱形图空白地方也能触发 tooltip。

hustcc avatar Apr 24 '25 06:04 hustcc

这个 tooltip 怎么不是使用图形去拾取?数学计算去拾取只在一些场景开启,比如:在柱形图空白地方也能触发 tooltip。

是指将 tooltip 监听事件从整个 canvas 身上移动到 rect 和 line 这些 shape 身上吗?可能有一个问题,就是无效数据像 null 和未定义这样的根本不存在 element ,可能这种需要做一些特殊监听处理,就是默认打开空白地方也能触发 tooltip,我觉得这个方法可以试试,确实每个图形单独拾取可以解决数学计算很多边缘情况无法考虑到的问题。🤔

BQXBQX avatar Apr 24 '25 06:04 BQXBQX

是指将 tooltip 监听事件从整个 canvas 身上移动到 rect 和 line 这些 shape 身上吗?可能有一个问题,就是无效数据像 null 和未定义这样的根本不存在 element ,可能这种需要做一些特殊监听处理,就是默认打开空白地方也能触发 tooltip,我觉得这个方法可以试试,确实每个图形单独拾取可以解决数学计算很多边缘情况无法考虑到的问题。🤔

是的,我记得之前是有不同模式,大部分图形,其实监听元素事件,比如散点图,基本只有柱形图才有数学拾取的情况。是之前某个 pr 修改了逻辑吗?

hustcc avatar Apr 24 '25 07:04 hustcc

有的,有个 isBar 的判断 Image

BQXBQX avatar Apr 24 '25 07:04 BQXBQX

所以该怎么修呢?🤔 感觉在柱状图的情况下数学计算是不可避免的,现在需要找到一个最准确的方法来进行数学计算捕获 element,或者能不能添加一些 props 来规避这些问题,所有的 tooltip 问题总结如下

  • [ ] 不等的 xDomain 会导致数学计算捕获错误。相关 issue:https://github.com/antvis/G2/issues/6720
  • [ ] 数值为 null 时,因不存在 element 导致数值捕获错误,无法展示 null 这个值在 tooltip 上。相关 issue:https://github.com/antvis/G2/issues/6753, https://github.com/antvis/G2/issues/6699, https://github.com/antvis/G2/issues/6754, https://github.com/antvis/G2/issues/6773, https://github.com/antvis/G2/issues/6774
  • [ ] groupItem 捕获错误。相关 issue:https://github.com/antvis/G2/issues/6710
  • [ ] 图表 resize重新渲染,最后几列的tooltip渲染不出。相关 issue:https://github.com/antvis/G2/issues/6756

第一个问题和第二个问题耦合性较强,第三个和第四个问题不是 tooltip findElement 函数的问题,可以单独修复。

BQXBQX avatar Apr 25 '25 08:04 BQXBQX