G2
G2 copied to clipboard
借助图形标注展示总计 label 显示错误
问题描述
基于 Ant Design Charts 提供的官方 demo 借助图形标注展示总计 label ,如果输入的值过小,而且通过 style.text
传入则会 label 不正确,可以通过将 style.text
传入函数进行规避问题
重现链接
重现步骤
- 将 annotations 中的
style.text
设置为字符串 - 数据中的值包含较小的值(小于 x 轴 label 长度的值)
预期行为
正确的显示 style.text
中设置的值
屏幕截图或视频
补充说明
没太懂 1339 行为啥判断的是 typeof value !== 'string'
,而不是typeof value === 'string'
https://github.com/antvis/G2/blob/c424eabde16a55cf8ad310912fd7bdd73ee0f169/src/runtime/plot.ts#L1332-L1342
没太懂 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 属性。
稍后我会提一个 PR 修复
@iTsingchen 同时可以参考这个 PR https://github.com/antvis/G2/pull/5964 添加一下测试哈,只用给 maybeTuple 的添加对应的测试就行了
解决的办法应该是在如下代码修改一下 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 属性构建
https://github.com/antvis/G2/blob/a63e388532d89b8e3b1ed57c83b9c290b8861187/site/docs/manual/core/style.zh.md?plain=1#L73-L78
根据 78 行描述,是否可以对 mark.style 进行处理,如果不是回调,进行 wrap 为回调? @pearmini
根据 78 行描述,是否可以对 mark.style 进行处理,如果不是回调,进行 wrap 为回调?
这个不太可行,style 的数据驱动能力还是必须有的,特别是一些特殊通道。
尝试了一下,通过修改 mark data 虽然能够解决该问题,但是会引发其他的问题,比如 Rang 等均依赖于 data 属性构建
这个引发的具体问题是?如果能解决 text 的问题就行,其余的 mark 可以先不管。