G2
- 快速上手
-
- 基础教程
- G2 图表的主要组成
- 图表对象配置(chart)
- data 数据
- Frame 常见操作
- 度量
- 列定义操作
- geom 几何标记
- attr 图形属性
- coord 坐标系
- axis 坐标轴
- legend 图例
- tooltip 提示信息
- guide 辅助标记
- stat 统计变换
- facet 分面
- theme 图表样式
- label 文本标签
- 图表事件 event
- 图表交互
- 数据异步加载与动态更新
- 数据滑动条插件使用
- 在 react 中使用 G2
- 常见问题
- 高级教程
- G2 图形语法简介
- G2 的数据处理流程
- 数据类型与度量
- 坐标系详解
- 图表类型
- 几何标记和数据调整
- 自定义 shape
- 多视图 view 绘制
- layout 布局
- 使用 G2 绘制词云
- 自定义动画
- 图表示例
-
- 更新日志
简介
所谓的列定义,即是对度量 scale 的操作。
G2 默认提供了一套生成度量的机制,我们会根据每个数据属性的第一个数值类型生成对应的度量。但是这套机制并不能满足全部的需求,因此我们为用户提供了手动指定度量类型的方法,以满足多样的可视化需求,这种使用方式我们称之为列定义。
列定义上的操作可以理解为直接修改源数据中的数据,因此它会影响坐标轴、tooltip 提示信息、图例、辅助元素 guide 以及几何标记的标签文本 label 的数据内容显示。
如何操作
G2 提供了两种列定义操作方式:
chart.source(data, defs);
用于多个数据字段的列定义。chart.col('dim', defs);
用于一个字段的列定义,该方法会覆盖chart.source()
中定义的对应字段的列定义且必须先于图形语法语句(chart.<geomType>.position()...
)进行声明。
chart.source(data, defs)
这种方式可以一次性为多个数据列进行度量类型的定义。
Example:
var defs = {
'a': {
type: 'time', // 指定 time 类型
mask: 'yyyy-mm-dd HH:MM:ss' // 指定时间的输出格式
},
'b': {
type: 'linear', // 指定 linear 连续类型
min: 0 // 指定度量的最小值
},
'c': {
type: 'cat', // 指定 cat 分类类型
values: ['一月','二月','三月'] // 重新指定 c 属性每一个的值
}
};
chart.source(data, defs);
chart.col('dim', def)
为单独的数据字段进行度量类型的配置。
注意:该方法是对于数据进行定义,会影响后面图形的绘制,所以必须先于图形语法语句(chart.<geomType>.position()...
)进行声明。
Example:
var data = [
{type: 0, value: 1},
{type: 1, value: 2},
{type: 2, value: 3},
];
chart.col('type', {
type: 'cat', // 声明 type 字段为分类类型
values: ['A', 'B', 'C'] // 重新显示的值
alias: '类型' // 设置属性的别名
});
该实例为 x 轴和 y 轴的两个数据字段都进行了列定义,将 x 轴的数据指定为 time 类型并指定了时间的显示格式,而 y 轴格式化了显示形式,为其加上了单位 'k',观察图表,tooltip 和 坐标轴都受了列定义的影响。
完整代码:
var data = [
{"value":10,"time":"2015-03-01T16:00:00.000Z"},
{"value":15,"time":"2015-03-01T16:10:00.000Z"},
{"value":26,"time":"2015-03-01T16:20:00.000Z"},
{"value":9,"time":"2015-03-01T16:30:00.000Z"},
{"value":12,"time":"2015-03-01T16:40:00.000Z"},
{"value":23,"time":"2015-03-01T16:50:00.000Z"},
{"value":18,"time":"2015-03-01T17:00:00.000Z"},
{"value":21,"time":"2015-03-01T17:10:00.000Z"},
{"value":22,"time":"2015-03-01T17:20:00.000Z"}
];
var chart = new G2.Chart({
id : 'c1',
forceFit: true,
height : 300
});
var defs = {
'time': {
type: 'time',
nice: false,
mask: 'HH:MM'
},
'value': {
formatter: function(val) {
return val + ' k';
}
}
};
chart.source(data,defs);
chart.line().position('time*value').color('red');
chart.render();