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个场景:

  1. 需要制定分类的顺序时,例如:c 字段有'最大','最小'和'适中'3种类型,我们想指定这些分类在坐标轴或者图例上的顺序时:
var defs = {
  'c': {type: 'cat',values: ['最小','适中','最大']}
};
  1. 数据字段中的数据是数据类型,但是需要转换成分类类型,这个时候需要注意原始数据必须是索引值才可以。
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)类型:

  1. 时间戳的数字形式, 1436237115500 // new Date().getTime()
  2. 时间字符串: '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)类型:

  1. 时间戳的数字形式, 1436237115500 // new Date().getTime()
  2. 时间字符串: '2015-03-01', '2015-03-01 12:01:40', '2015/01/05','2015-03-01T16:00:00.000Z'