G2 icon indicating copy to clipboard operation
G2 copied to clipboard

借助图形标注展示总计 label 显示错误

Open iTsingchen opened this issue 1 year ago • 6 comments

问题描述

基于 Ant Design Charts 提供的官方 demo 借助图形标注展示总计 label ,如果输入的值过小,而且通过 style.text 传入则会 label 不正确,可以通过将 style.text 传入函数进行规避问题

重现链接

重现示例

重现步骤

  1. 将 annotations 中的 style.text 设置为字符串
  2. 数据中的值包含较小的值(小于 x 轴 label 长度的值)

预期行为

正确的显示 style.text 中设置的值

屏幕截图或视频

image

补充说明

没太懂 1339 行为啥判断的是 typeof value !== 'string' ,而不是typeof value === 'string'

https://github.com/antvis/G2/blob/c424eabde16a55cf8ad310912fd7bdd73ee0f169/src/runtime/plot.ts#L1332-L1342

iTsingchen avatar Dec 21 '23 02:12 iTsingchen

没太懂 1339 行为啥判断的是 typeof value !== 'string' ,而不是typeof value === 'string'

应该 value 是 string 的时候可能是数据的某个字段,而不是最后值,所以需要判断一下。

这是 data 语法糖带来的一个 bug。valueof 这个函数的 datum 参数其实是 1991/01,这里的 value 又是数字,所以就会返回 "19991/91"[0],也就是 1。

解决的办法应该是在如下代码修改一下 mark data 的值为 I.map((_, i) => i)

https://github.com/antvis/G2/blob/019e9843fc2854af45754c8da4530114b5c0aecf/src/transform/maybeTuple.ts#L18

感兴趣来提一个 PR 来贡献一下吗?可以把下面的都改了:

  • maybeTupleX
  • maybeTupleY
  • maybeDefaultX
  • maybeDefaultY

都是修改一下 mark 的 data 属性。

pearmini avatar Dec 21 '23 03:12 pearmini

稍后我会提一个 PR 修复

iTsingchen avatar Dec 21 '23 03:12 iTsingchen

@iTsingchen 同时可以参考这个 PR https://github.com/antvis/G2/pull/5964 添加一下测试哈,只用给 maybeTuple 的添加对应的测试就行了

pearmini avatar Dec 21 '23 03:12 pearmini

解决的办法应该是在如下代码修改一下 mark data 的值为 I.map((_, i) => i)

https://github.com/antvis/G2/blob/019e9843fc2854af45754c8da4530114b5c0aecf/src/transform/maybeTuple.ts#L18

感兴趣来提一个 PR 来贡献一下吗?可以把下面的都改了:

  • maybeTupleX
  • maybeTupleY
  • maybeDefaultX
  • maybeDefaultY

都是修改一下 mark 的 data 属性。

尝试了一下,通过修改 mark data 虽然能够解决该问题,但是会引发其他的问题,比如 Rang 等均依赖于 data 属性构建

iTsingchen avatar Dec 21 '23 09:12 iTsingchen

https://github.com/antvis/G2/blob/a63e388532d89b8e3b1ed57c83b9c290b8861187/site/docs/manual/core/style.zh.md?plain=1#L73-L78

根据 78 行描述,是否可以对 mark.style 进行处理,如果不是回调,进行 wrap 为回调? @pearmini

iTsingchen avatar Dec 22 '23 04:12 iTsingchen

根据 78 行描述,是否可以对 mark.style 进行处理,如果不是回调,进行 wrap 为回调?

这个不太可行,style 的数据驱动能力还是必须有的,特别是一些特殊通道。

尝试了一下,通过修改 mark data 虽然能够解决该问题,但是会引发其他的问题,比如 Rang 等均依赖于 data 属性构建

这个引发的具体问题是?如果能解决 text 的问题就行,其余的 mark 可以先不管。

pearmini avatar Dec 22 '23 06:12 pearmini