语法
Frame
概述
G2 接收的数据格式非常简单:标准的JSON数组,每个数组元素是一个 JSON 对象,G2 在图表的内部将数据转换成一个 Frame对象,也可以用户直接创建Frame 对象,同时执行一些数据操作。
语法
var data = [
{gender:'男',count:40},
{gender:'女',count:30}
];
var Frame = G2.Frame;
var frame = new Frame(data); // 图表内部做的转换
Frame.sort(frame,'count'); // 按照count 排序
chart.source(frame);
方法
Frame 数据集合的操作基本上都是列操作,下面列出了 Frame 数据集合对象提供的操作方法:
colNames
frame.colNames()
return Array; 返回数据集合的所有列名称。
colCount
frame.colCount()
return Number; 返回数据集合列的个数。
colIndex
frame.colIndex(name)
return Number; 根据列名称获取对应的索引。
colArray
frame.colArray(name)
return Array; 根据列名称、索引获取列对应的数组。
colReplace
frame.colReplace(name, arr)
return frame; 替换数据集合中的列数组。
- name 可以是列名称也可以是索引
- 返回数据集合本身,数据集合发生改变
rowCount
frame.rowCount()
return Number; 返回数据集合行的个数。
rowObject
frame.rowObject(index)
return Object; 根据索引获取行对象。
cell
frame.cell(rowIndex,colName)
返回指定行索引和列名称(列索引)的数值。
toArray
frame.toArray()
return Array; 将数据集合生成列数组。
toJSON
frame.toJSON()
return Array; 将数据集合生成 JSON 数组。
s
frame.s()
return String; 将整个数据集合生成字符串,一般用于调试输出现有集合。
addCol
frame.addCol(name, arr|fn)
添加列:
- name: 列名称;
- arr:列对应的数组;
- fn:回调函数,函数原型 function(obj){}。
col
frame.col(name)
return Frame; 根据列名称或者索引生成新的数据集合。
cols
frame.cols(names)
return Frame; 根据多个列名称或者索引生成新的数据集合。
row
frame.row(rowIndex)
return Frame; 根据行索引生成新的数据集合。
rows
frame.rows(rowIndexs)
return Frame; 根据多个行索引生成新的数据集合。
sub
frame.sub(startCol, endCol, startRow, endRow)
return Frame; 根据行和列获取一个子集合。
Frame 类有大量静态方法,用于统计 Frame 的数据、合并、排序等功能:
mean
Frame.mean(frame, x)
return Number; 计算列 x 的平均值。
geometric_mean
Frame.geometric_mean(frame, x)
return Number; 计算列 x 的几何平均值。
sum
Frame.sum(frame, x)
return Number; 计算列 x 的和。
max
Frame.max(frame, x)
return Number; 计算列 x 的最大值。
min
Frame.min(frame, x)
return Number; 计算列 x 的最小值。
range
Frame.range(frame, x)
return Array; 计算列 x 的最小值和最大值。
model
Frame.model(frame, x)
return Number; 计算列 x 的众数,最多的数。
median
Frame.median(frame, x)
return Number; 计算列 x 的中位数。
variance
Frame.variance(frame, x)
return Number; 计算列 x 的方差。
standard_deviation
Frame.standard_deviation(frame, x)
return Number; 计算列 x 的标准方差。
sort
Frame.sort(frame, x)
return Frame; 返回按照列排序后的数据集合。
sortBy
Frame.sortBy(frame, fn)
return Frame; 返回按照列排序后的数据集合,fn是排序的函数,函数原型是 function(obj1, obj2)。
filter
Frame.filter(frame, fn)
return Frame; 过滤数据集合,fn 的函数原型 function(obj,index) 返回 true 或者 false。
group
Frame.group(frame, condition)
return Array; 按照条件进行分组,返回 [frame1,frame2...framen],condition条件可以是列名的数组也可以是一个函数返回一个唯一的键值。
groupToMap
Frame.groupToMap(frame, condition)
return Array;
- 按照条件进行分组,形成map,键值对,返回 {key1: frame1,key2: frame2,key3: frame3....keyn:framen};
- condition条件可以是列名的数组也可以是一个函数返回一个唯一的键值。
complement
Frame.complement(frame, cols)
return Frame; 取指定列的补集组成的数据集合,例如 names: ['a','b','c','d'], Frame.complement(frame,['a','c']),生成的names : ['b','d']的数据集合
merge
Frame.merge(frame1,frame2...framen)
return Frame; 合并传入的集合成为一个集合,列不发生变化,假设传入的集合的列一致,仅是增加行
combin
Frame.combin(frame1,frame2...framen)
return Frame; 合并传入的集合成为一个集合,列进行组合,行的数目不变,仅仅是列变化
combinColumns
Frame.combinColumns(frame, cols, name, typeName, retains)
return Frame; 将多列合并成一列,然后基于多列的数据进行统计
- cols:是要合并的列;
- name:合并的新列的名称;
- typeName:存储原先字段的名字作为分类;
- retains:除了合并的列之外保留的列。
combinArray
Frame.combinArray(newName, arr0, arr1...arrn)
return Frame; 将多个数组合并成一个数据集合,并形成新的列,新的列的值为数组的索引。
- newName 生成新的列的字段名,默认为 'type'。
示例
var arr1 = [{a: 'a1','b': 'b1'}];
var arr2 = [{a: 'a2','b': 'b2'}];
// 新的数据 : [{a: 'a1','b': 'b1',type: 0}, {a: 'a2','b': 'b2',type:1}]
Frame.combinArray(arr1, arr2);
// 新的数据 : [{a: 'a1','b': 'b1',myType: 0},{a: 'a2','b': 'b2',myType: 1}];
Frame.combinArray('myType', arr1, arr2);