上一次讲了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 clock
cfg: {object}, // 对应各个 type 坐标系属性配置,同 `chart.coord(type, cfg)` 中的 cfg
actions: {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 schemaDodge
adjust: {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 可以是数据字段名、图形形状名
}