设置图表状态量
状态量
状态量被用于驱动图表内各元素元子级的 UI 状态变化。在 g2plot 中,元子级 UI 状态是可以枚举的,共有以下四种:
- 图形 default 状态:
normal
- 图形高亮:
active
- 图形置灰:
disable
- 图形选中:
selected
UI 状态的变化是数据驱动的,能够响应状态量的图表元素记录所对应的数据,而状态量本身是一个数据判断条件。当图表元素对应的数据符合状态量的判断条件时,它的 UI 就会切换到状态量所对应的图形样式。
状态量的使用
快捷方法
g2plot 提供了状态量变化的快捷方法:setActive()
setDisable()
setSelected()
setNormal()
setActive(condition,style?)
condition
: function | object 设置状态量的条件condition: function
通过回调函数设置状态量条件condition: { name: string, exp: string | number }
设置单值的状态量条件,name 一般为图表数据中的字段名称,exp 为单值数据condition: { name: string, exp: function }
设置多值的状态量,name 一般为图表数据中的字段名称,exp 为一个回调函数style: object
可选,设置状态量驱动的 UI 样式。如不配置,则会默认去取 theme 中的状态样式。
代码示例:
// 通过回调函数设置状态量
plot.setActive((shapeData) => {
return shapeData.type !== 'a';
});
// 设置单值状态量
plot.setActive({ name: 'type', exp: 'a' });
// 设置多值状态量
plot.setActive({
name: 'type',
exp: (value) => {
return value !== 'a';
},
});
// 设置状态量样式
plot.setActive({ name: 'type', exp: 'a' }, { stroke: 'black', lineWidth: 2 });
setDisable(condition,style?)
配置项与用法同 setActive。
setSelected(condition,style?)
配置项与用法同 setActive。
setNormal(condition)
清空状态样式,使图表元素回到 default 状态。g2plot 会记录图表元素的 default 样式,因此不需另外配置 style。
用法同 setActive。
初始化设置
通过defaultState
配置项配置图表初始化时的状态。
defaultState: object
active: object
condition: { name: string, exp: string | number | function }
设置状态量条件
related: string[]
设置同状态量联动的组件,如 axis、label、tooltip 等
disable: object
用法同 active
selected: object
用法同 active
用法:
defaultState:{
active:{
condition:{
name: 'value',
exp: 5
},
related: ['axis','label']
},
disable:{
condition: {
name: 'type',
exp: (d)=>{
return d !== 'a';
}
},
related: ['tooltip','label','axis']
}
}
在图表主题中定义状态样式
plot.registerTheme('line', {
lineStyle: {
normal: {} | Function,
active: {} | Function,
disable: {} | Function,
selected: {} | Function,
},
});
设计规范