上一次讲了chart的一些基本属性,这次再讲一讲chart的另一个很重要的属性叫options,因为options内容比较多,而且也很重要,所以将这个属性单独放到一篇文章来分析,此篇是对options内部属性的大致介绍,具体关于每个属性的详细分析将在之后章节进行讲解。
options属性内容:
const options = {scales: {object}, // 列定义声明coord: {object}, // 坐标系配置axes: {object}, // 坐标轴配置legends: {object}, // 图例配置guides: {array}, // 图表辅助元素配置filters: {object}, // 数据过滤配置tooltip: {object}, // 提示信息配置facet: {object}, // 分面配置geoms: {array} // 图形语法相关配置}
scales(度量)
参数类型:object
度量配置属性,函数式调用api: chart.scale()
度量定义
度量 Scale,是数据空间到图形空间的转换桥梁,负责原始数据到 [0, 1] 区间数值的相互转换工作,从原始数据到 [0, 1] 区间的转换我们称之为归一化操作。
配置方式
scales: {field1: {object}, // 为数据字段 field1 进行列定义field2: {object}, // 为数据字段 field2 进行列定义...}
为什么需要度量来转换数据?
因为我们不可能直接将数据放到图表上,最后绘图的时候我们要的其实是每个数据位置,比如:
const chart=new G2.Chart({container:"root",width:400,height:400,options:{scales:{name:{type:"cat"},value:{type:"linear"}}}});const data=[{name:"martin",value:5},{name:"lucy",value:10}];chart.source(data);chart.interval().position("name*value");chart.render();
说明: 这里我们画的是一个柱状图,X轴要显示name信息,而且name不是数值,所以要把它表示在坐标轴上,必须用某种规则把它表示成数值;同样Y轴要显示value信息,虽然value数值,但是我们不可能把value值直接当成柱高来展示,因为那样我们柱高和图表的height就不好把控,height过大,柱高可能很小,看上去很难看,所以最好的方式用比例来显示,这样的话无论图表的height多大或多小,图形都能以最好的比例来展示。所以我们将坐标轴的起点看成0,终点看成1,然后把原始数据转换到[0,1]的区间,中间的转换规则就叫scales度量。
scales分类
按照数据类型,可以将scales的类型分成以下几类:
| 数据类型 | 度量类型 |
|---|---|
| 连续 | linear、log、pow、time |
| 分类(非连续) | cat、timeCat |
| 固定 | identity |
关于scale的具体用法见scale用法解析。
coord (坐标系)
参数类型:object
坐标系配置参数,函数式调用api: chart.coord()
配置方式
coord: {type: {string}, // 坐标系类型声明,可取值: rect polar theta map helix gauge clockcfg: {object}, // 对应各个 type 坐标系属性配置,同 `chart.coord(type, cfg)` 中的 cfgactions: {array} // 声明坐标系需要进行的变换操作}
coord分类
coord类型可以分为直角坐标系和极坐标系两大类,具体类型见下表:
| type | coordType | 说明 |
|---|---|---|
| 直角坐标系 | rect |
直角坐标系,目前仅支持二维,由 x, y 两个互相垂直的坐标轴构成。 |
| 极坐标系 | polar |
极坐标系,由角度和半径 2 个维度构成。 |
theta |
一种特殊的极坐标系,半径长度固定,仅仅将数据映射到角度,常用于饼图的绘制。 | |
helix |
螺旋坐标系,基于阿基米德螺旋线。 |
关于coord的具体用法见coord用法解析。
axes(坐标轴)
参数类型:Boolean||object
坐标轴配置属性,函数式调用api:chart.axis(dim, cfg)
配置方式
参数为Boolean
//不展示某一条坐标轴axes:{field1:false// 不展示数据字段 field1 对应的坐标轴}//不展示所有坐标轴axes:false//不展示所有数据字段对应的坐标轴
参数为Object
axes: {field1: {object},field2: {object}// ...}
关于axes的具体用法见axis用法解析。
legends(图例)
参数类型:Boolean||object
图例配置属性,函数式调用api:chart.legend()
配置方式
参数为Boolean
legends:false//不显示所有图例
参数为Object
legends: {position: 'right', // 图例的显示位置,有 'top','left','right','bottom'四种位置,默认是'right'title:"price"//···}
guides(辅助元素)
参数类型:array
辅助元素配置属性,函数式调用api:chart.guide()
配置方式
[{type: 'line', // 声明辅助元素的类型start: {array}, // 辅助线起始点,[startX, startY]end: {array}, // 辅助线结束点,[endX, endY]style: {stroke: '#999', // 线的颜色lineDash: [ 0, 2, 2 ], // 虚线的设置lineWidth: 3 // 线的宽度} // {object} 配置项,与原语法相同}]
filters
参数类型:object
辅助元素配置属性,函数式调用api: chart.filter(dim,callback)
配置方式
filters: {field1: {function}, // 对字段名为 field1 的数据进行过滤field2: {function}, // 对字段名为 field2 的数据进行过滤...}
tooltip
参数类型:Boolean||object
辅助元素配置属性,函数式调用api: chart.tooltip()
配置方式
参数为Boolean
tooltip: false//所有提示信息不显示
参数为Object
tooltip: {showTitle: false//...}
geoms
类型:array
声明绘制图表的图形语法,可同时声明多种 geom 配置。对应函数式调用 api: chart.<geomType> 。
配置方式
geoms: [{type: {string}, // 声明 geom 的类型:point line path area interval polygon schema edge heatmap pointStack pointJitter pointDodge intervalStack intervalDodge intervalSymmetric areaStack schemaDodgeadjust: {string} | {array}, // 数据调整方式声明,如果只有一种调整方式,可以直接声明字符串,如果有多种混合方式,则以数组格式传入position: {string} | {object}, // potision 图形属性配置color: {string} | {object}, // color 图形属性配置shape: {string} | {object}, // shape 图形属性配置size: {string} | {object}, // size 图形属性配置opacity: {string} | {object}, // opacity 图形属性配置label: {string} | {object}, // 图形上文本标记的配置tooltip: {string}, // 配置 tooltip 上显示的字段名称style: {object}, // 图形的样式属性配置active: {boolean}, // 开启关闭 geom active 交互select: {object}, // geom 选中交互配置animate: {object} // 动画配置},{// 同上述配置相同,可以定义多个 geom}]
注意:options中的geoms可以和chart.geom()同时设置,且两者会同时生效,不会互相覆盖。
例子:
const data=[{name:"martin",value:5},{name:"lucy",value:10}];const chart=new G2.Chart({container:"root",width:400,height:400,options:{geoms:[{type:"line",position:"name*value"}]}});chart.source(data);chart.interval().position("name*value");chart.render();

上图代码中,options的geoms设置为线图,而chart.geom()设置为柱图,结果发现两种图同时出现,所以geoms属性设置和chart.geom()函数设置是会同时生效的。
position
参数类型:String || Object
辅助元素配置属性,函数式调用api: chart.geom().position()
配置方式
参数类型为String
position: 'field1*field2'
参数类型为Object
position: {field: 'field1*field2'}
color
参数类型:String || Object
辅助元素配置属性,函数式调用api: chart.geom().color()
配置方式
参数类型为String
color: value// value 可以是数据字段名、颜色值
参数类型为Object
color: {field: value// value 可以是数据字段名、颜色值}
shape
参数类型:String || Object
辅助元素配置属性,函数式调用api: chart.geom().shape()
配置方式
参数类型为String
shape: value// value 可以是数据字段名、图形形状名
参数类型为Object
shape: {field: value// value 可以是数据字段名、图形形状名}
size
参数类型:String || Object
辅助元素配置属性,函数式调用api: chart.geom().size()
配置方式
参数类型为String
size: value// value 可以是数据字段名、数值
参数类型为Object
opacity: {field: value// value 可以是数据字段名、数值callback: {function}}
opacity
参数类型:String || Object
辅助元素配置属性,函数式调用api: chart.geom().opacity()
配置方式
参数类型为String
opacity: value// value对应映射至 opacity 的数据字段名、具体透明度数值
参数类型为Object
opacity: {field: value// value对应映射至 opacity 的数据字段名、具体透明度数值}
label
参数类型:String || Object
辅助元素配置属性,函数式调用api: chart.geom().label()
配置方式
参数类型为String
label: value// value对应字段名或者带有统计的声明
参数类型为Object
shape: {field: value// value 需要标注的数据字段名cfg: {object} // 具体的 label 配置,参见 geom.label() 方法callback: {function}}
style
参数类型:Object
辅助元素配置属性,函数式调用api: chart.geom().style()
配置方式
style: {field: {string}, // 映射的字段cfg: {object} // 配置信息};
select
参数类型:Boolean || Object
辅助元素配置属性,函数式调用api: chart.geom().select()
配置方式
参数类型为Boolean
select: Boolean//开启关闭选中功能
参数类型为Object
select: {mode: 'multiple' | 'single', // multiple 为多选,single 为单选, false 为关闭选中功能style: {// 设置选中图形的样式,不设置则使用默认提供的样式// 图形绘制属性,如 fill stroke}}
active
参数类型:Boolean
辅助元素配置属性,函数式调用api: chart.geom().active()
配置方式
active: Boolean//开启关闭 geom active 交互
animate
参数类型:Object
辅助元素配置属性,函数式调用api: chart.geom().animate()
配置方式
shape: {field: value// value 可以是数据字段名、图形形状名}
