The issue has been closed
后端返回的对象数组,里面有很多值, 自己格式化太麻烦了
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一样,支持字符串?

数据结构还是建议严格的数据结构,内部做自动的转化和推荐,会带来其他额外的问题:
等
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'];
而对于数字来说,它们有默认的排序方法,所以默认会排序。如果希望对字符串默认排序,有两种思路:
- 自己排序后,再交给 G2。
chart.data({
value: data,
transform: [{ type: 'sort', callback: () => {} }],
});
- 对于时间字符串特殊处理,参考这个讨论
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