优化推断通道类型的方法
#4486
Replies: 1 comment 2 replies
-
如果初始 data 为空,然后网络请求回来之后,再设置数据呢? mark.encode('color', { type: 'field', value: 'a' }); 这种是一直支持的吧? |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
优化推断通道类型的方法
目前在 G2 中一共有三种类型的通道:
当用户通过
mark.encode
去指定通道值的时候,G2 内部会根据这值去推断通道的类型。当指定的值是
number
,boolean
或者function
的时候通道类型是没有歧义的,前两者都是 constant,而后者是 transform。但是如果指定的值是string
的时候就存在歧义了:可能是 field 通道,也可能是 constant 通道。针对上面的情况,有两种思路:
是否为字段
第一种思路是 G2 目前采用的使用:判断第一条数据是否有该字段。
这样比较简单,但当数据有缺失的时候,就会出问题了。(参考这个 issue:https://github.com/antvis/G2/issues/4437 )
针对这种情况,要么就是显示声明通道类型,要么就是判断所有数据。
这里觉得第二种解决办法好一点:如果数据没有缺失,没有性能损失;如果数据有缺失,性能损失也不大。
是否为颜色
Plot 里面就采用的是判断这个字符串是否为颜色:
如果 value 既是字段,又是颜色,那么会被认为是颜色。如果希望是字段需要如下去声明:
同时还需要判断这个 value 是不是形状。
结论
因为判断是否为颜色和形状会相对复杂一点,所以这里建议就判断是否为字段,只不过修改判断方法如下:
Beta Was this translation helpful? Give feedback.
All reactions