antvis/G2

[v5]: 能支持string 类型的值吗? #4431

Valar103769 posted onGitHub

后端返回的对象数组,里面有很多值, 自己格式化太麻烦了


    list.map((row) => Object.fromEntries(Object.entries(row).map(([k, v]) => [k, Number(v) ?? v])))

 Number(v) ?? v  这个判断能 把 ‘0’ ->0,但是会修改其他值, 比如  '2020-02-10' 日期字符串也变成NaN了
Number(v) || v 这个判断能处理'2020-02-10' , 但是不能把  ‘0’ ->0,
js不够优雅, 能不能你们做下处理?  像echarts一样,支持字符串?

数据结构还是建议严格的数据结构,内部做自动的转化和推荐,会带来其他额外的问题:

  • 比如其他场景的 bug
  • 内部逻辑,开发者无法感知

posted by hustcc over 2 years ago

这里的支持 string 是指支持 '2020-02-10' 这样的字符串作为日期吗?

posted by pearmini over 2 years ago

*

能有什么问题? 有具体的例子么? 为什么echart就可以?

posted by Valar103769 over 2 years ago

这里的支持 string 是指支持 '2020-02-10' 这样的字符串作为日期吗?

g2中, x轴不能是数字,y轴不能是字符串, 动不动就图标出不来 echart就没这些限制

简单理解, 就是y轴支持字符串,

posted by Valar103769 over 2 years ago

这里的支持 string 是指支持 '2020-02-10' 这样的字符串作为日期吗?

g2中, x轴不能是数字,y轴不能是字符串, 动不动就图标出不来 echart就没这些限制

简单理解, 就是y轴支持字符串,

G2 中应该没有 x 轴不是数字,y 轴不是字符串的限制。有没有绘制出来图表的 demo 吗?包括需要 y 轴支持字符串的那个 demo。

posted by pearmini over 2 years ago

这里的支持 string 是指支持 '2020-02-10' 这样的字符串作为日期吗?

g2中, x轴不能是数字,y轴不能是字符串, 动不动就图标出不来 echart就没这些限制 简单理解, 就是y轴支持字符串,

G2 中应该没有 x 轴不是数字,y 轴不是字符串的限制。有没有绘制出来图表的 demo 吗?包括需要 y 轴支持字符串的那个 demo。

x轴是数字,那么x会排序, x轴是字符串,那么x不会排序,

y轴是数字,那么y会排序, y轴是字符串,那么y会乱序,(支持下这个,同echarts即可)

posted by Valar103769 over 2 years ago

字符串不默认排序的原因是:没有一个默认的排序方法,排序有歧义。给定如下的数组:

const strings = ['tall', 'short', 'normal'];

如果升序例排序:

// 排序方式1:字母序
['normal', 'short', 'tall'];

// 排序方式2:上下文,身高
['short', 'normal', 'tall'];

而对于数字来说,它们有默认的排序方法,所以默认会排序。如果希望对字符串默认排序,有两种思路:

  1. 自己排序后,再交给 G2。
chart.data({
  value: data,
  transform: [{ type: 'sort', callback: () => {} }],
});
  1. 对于时间字符串特殊处理,参考这个讨论
posted by pearmini over 2 years ago

只需要 针对数字型字符串 以及以% 结尾的字符串排序

'123%'.match(/^(\d*)%?$/)?.[1] //  '123'
posted by Valar103769 over 2 years ago

对于时间字符串特殊处理 用type告诉g2,是时间, 再 传入YYYY-MM-DD 等格式, 格式的传于不传, 以及什么格式, 完全取决于你们依赖的库比如, dayjs, 至于中途出错了, 你们都不需要关心, 直接抛出错误即可

这个东西g2为什么要去包装呢?

.xAxis('hour',{
type:'time',
format:'YYYY-MM-DD' ,  很多库都支
持不传第二个参数
})
posted by Valar103769 over 2 years ago

ref #4454 相同问题在一个 issue 处理吧~

posted by hustcc over 2 years ago

Fund this Issue

$0.00
Funded

Pull requests