语法
Scale
概述
度量(scale)用于表示数据的类型、对比数据的大小,在G2中度量是用来将数据转换到 [0,1] 这个区间内的标尺。
根据数据的类型,G2 支持以下几种度量类型:
- identity,常量类型的数值,也就是说数据的某个字段是不变的常量;
- linear,连续的数字 [1,2,3,4,5];
- cat,分类, ['男','女'];
- time,连续的时间类型;
- timeCat,非连续的时间,比如股票的时间不包括周末或者未开盘的日期;
- log,连续非线性的 Log 数据 将 [1,10,100,1000] 转换成[0,1,2,3];
- pow,连续非线性的 pow 数据 将 [2,4,8,16,32] 转换成 [1,2,3,4,5]。
语法
度量作为数据的属性,所以需要在用户指定数据源时,一起设置:
var data = [...];
var defs = {
a: {
type: 'cat'
},
b: {
min: 0,
max: 100
}
};
chart.source(data,defs);
属性
下面列出的是通用的属性:
type
[String],指定不同的度量类型,支持的 type 在上面已经列出。
formatter
[Function],用户格式化数据,输出ticks时使用。
range
[Array],输出数据的范围,默认[0, 1]。
alias
[String],度量的别名,一般用于将字段的英文名称转换成中文名。
示例
var defs = {'time': {type: 'time',alias:'时间'}};
方法
下面列出的是度量的通用方法,但是由于 G2 中用户不需要直接操作度量,所以这些方法不需要用户调用。
scale
scale(value)
将数据转换到[0,1]之间。
invert
invert(value)
将[0,1]之间的数据翻转回原始数据。
getTicks
getTicks()
获取坐标轴需要的ticks。
getText
getText(value)
格式化具体的一个值。
不同的度量类型支持的属性略微不同,下面为具体的度量类型介绍具体的配置项:
linear类型度量
属性名 | 说明 |
---|---|
nice | 是否将 ticks 进行优化,变更数据的最小值、最大值,使得每个 tick 都是用户易于理解的数据 |
min | 最小值 |
max | 最大值 |
tickCount | 坐标点的个数,默认是 5。但不一定是准确值 |
tickInterval | 用于指定坐标轴各个标度点的间距,是原始数据之间的间距差值,tickCount 和 tickInterval 不可以同时声明。 |
常用于自动计算的最大值、最小值不满足需求时如:柱状图的最小值不是0,导致柱状图的比例失调时。
cat分类度量
属性名 | 说明 |
---|---|
values | 具体的分类的值,一般用于指定具体的顺序和枚举的对应关系 |
常用于2个场景:
- 需要制定分类的顺序时,例如:c 字段有'最大','最小'和'适中'3种类型,我们想指定这些分类在坐标轴或者图例上的顺序时:
var defs = {
'c': {type: 'cat',values: ['最小','适中','最大']}
};
- 数据字段中的数据是数据类型,但是需要转换成分类类型,这个时候需要注意原始数据必须是索引值才可以。
var data = [
{"month":0,"tem":7,"city":"tokyo"},
{"month":1,"tem":6.9,"city":"tokyo"},
{"month":2,"tem":9.5,"city":"tokyo"},
{"month":3,"tem":14.5,"city":"tokyo"},
{"month":4,"tem":18.2,"city":"tokyo"},
{"month":5,"tem":21.5,"city":"tokyo"},
{"month":6,"tem":25.2,"city":"tokyo"}
];
var defs = {
'month':{
type: 'cat',
values: ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']
}};
chart.source(data,defs);
log度量类型
属性名 | 说明 |
---|---|
nice | 是否将 ticks 进行优化,变更数据的最小值、最大值,使得每个 tick 都是用户易于理解的数据 |
min | 最小值 |
max | 最大值 |
base | Log 的基数,默认是2 |
最小值和最大值悬殊非常大时可以用log平滑一下数据
pow度量类型
属性名 | 说明 |
---|---|
nice | 是否将 ticks 进行优化,变更数据的最小值、最大值,使得每个 tick 都是用户易于理解的数据 |
min | 最小值 |
max | 最大值 |
exponent | 指数,默认 2 |
*最小值和最大值悬殊非常大时可以用 pow 平滑一下数据
time时间度量
是 linear 度量的一种,连续的时间度量类型,默认会对数据做排序。
属性名 | 说明 |
---|---|
nice | 是否将 ticks 进行优化,变更数据的最小值、最大值,使得每个 tick 都是用户易于理解的数据 |
min | 最小值 |
max | 最大值 |
mask | 数据的格式化格式 默认:'yyyy-mm-dd', |
tickCount | 坐标点的个数,默认是5。但不一定是准确值 |
tickInterval | 用于指定坐标轴各个标度点的间距,是原始数据之间的间距差值,time 类型需要转换成时间戳,tickCount 和 tickInterval 不可以同时声明。 |
目前支持 2 种类型的时间(time)类型:
- 时间戳的数字形式, 1436237115500 // new Date().getTime()
- 时间字符串: '2015-03-01', '2015-03-01 12:01:40', '2015/01/05','2015-03-01T16:00:00.000Z'
timeCat时间分类度量
时间分类类型,是一种分类类型的时间度量类型,默认会对数据做排序。
属性名 | 说明 |
---|---|
nice | 是否将 ticks 进行优化,变更数据的最小值、最大值,使得每个 tick 都是用户易于理解的数据 |
mask | 数据的格式化格式 默认:'yyyy-mm-dd', |
tickCount | 坐标点的个数,默认是5。但不一定是准确值 |
values | 具体的分类的值,一般用于指定具体的顺序和枚举的对应关系 |
目前支持 2 种类型的时间(time)类型:
- 时间戳的数字形式, 1436237115500 // new Date().getTime()
- 时间字符串: '2015-03-01', '2015-03-01 12:01:40', '2015/01/05','2015-03-01T16:00:00.000Z'