AntV G6 内置了三种形态的 TimeBar 组件:

  • 带有趋势图的 TimeBar 组件;
  • 简易版的 TimeBar 组件;
  • 刻度 TimeBar 组件。

并且每种类型的 TimeBar 组件都可以配合播放、快进、后退等控制按钮组使用。
image.png
趋势图 TimeBar 组件

image.png
简易版 TimeBar 组件

image.png
刻度 TimeBar 组件

在趋势图 TimeBar 基础上,我们可以通过配置数据,实现更加复杂的趋势图 TimeBar 组件,如下图所示。
image.png
虽然 G6 提供了各种不同类型的 TimeBar 组件,但在使用的方式却非常简单,通过配置字段就可以进行区分。

关于 TimeBar 的使用案例,请参考这里

使用 TimeBar 组件

使用 G6 内置的 TimeBar 组件,和使用其他组件的方式完全相同。

  1. import G6 from '@antv/g6'
  2. const timebar = new G6.TimeBar({
  3. width: 500,
  4. height: 150,
  5. padding: 10,
  6. type: 'trend',
  7. trend: {
  8. data: timeBarData
  9. },
  10. });
  11. const graph = new G6.Graph({
  12. container: 'container',
  13. width,
  14. height,
  15. plugins: [timebar],
  16. });

通过上面的方式,我们就可以在图中使用 TimeBar 组件了,当实例化 TimeBar 时,type 参数值为 trend,表示我们实例化的是趋势图组件,效果如下图所示。
image.png

当设置 type 为 simple 时,就可以使用简易版的 TimeBar。
image.png

当设置 type 为 tick 时,表示我们要使用刻度 TimeBar 组件,但此时要注意的是,刻度时间轴的配置项是通过 tick 对象配置而不是 trend 对象,这也是刻度时间轴和趋势即简易时间轴不同的地方。

  1. const timebar = new G6.TimeBar({
  2. width,
  3. height: 150,
  4. type: 'tick',
  5. tick: {
  6. data: timeBarData,
  7. width,
  8. height: 42,
  9. tickLabelFormatter: d => {
  10. const dateStr = `${d.date}`
  11. if ((count - 1) % 10 === 0) {
  12. return `${dateStr.substr(0, 4)}-${dateStr.substr(4, 2)}-${dateStr.substr(6, 2)}`;
  13. }
  14. return false;
  15. },
  16. tooltipFomatter: d => {
  17. const dateStr = `${d}`
  18. return `${dateStr.substr(0, 4)}-${dateStr.substr(4, 2)}-${dateStr.substr(6, 2)}`;
  19. }
  20. },
  21. });

image.png

参数定义

接口定义

完整的 TimeBar 的接口定义如下:

  1. interface TimeBarConfig extends IPluginBaseConfig {
  2. // position size
  3. readonly x?: number;
  4. readonly y?: number;
  5. readonly width?: number;
  6. readonly height?: number;
  7. readonly padding?: number;
  8. readonly type?: 'trend' | 'simple' | 'tick';
  9. // 趋势图配置项
  10. readonly trend?: TrendConfig;
  11. // 滑块、及前后背景的配置
  12. readonly slider?: SliderOption;
  13. // 刻度时间轴配置项
  14. readonly tick?: TimeBarSliceOption;
  15. // 控制按钮
  16. readonly controllerCfg?: ControllerCfg;
  17. rangeChange?: (graph: IGraph, minValue: string, maxValue: string) => void;
  18. valueChange?: (graph: IGraph, value: string) => void;
  19. }

接口参数说明

名称 类型 默认值 描述
container HTMLDivElement null TimeBar 容器,如果不设置,则默认创建 className 为 g6-component-timebar 的 DOM 容器
x number 0 TimeBar 开始 x 坐标
y number 0 TimeBar 开始 y 坐标
width 必选 number TimeBar 容器宽度
height 必选 number TimeBar 高度
padding number/number[] 10 TimeBar 距离容器的间距值
type ‘trend’ / ‘simple’ / ‘tick’ trend 默认的 TimeBar 类型,默认为趋势图样式
trend TrendConfig null Timebar 中趋势图的配置项,当 type 为 trend 或 simple 时,该字段必选
slider SliderOption null TimeBar 组件背景及控制调节范围的滑块的配置项
tick TimeBarSliceOption null 刻度 TimeBar 配置项,当 type 为 tick 时,该字段必选
controllerCfg ControllerCfg null 控制按钮组配置项
rangeChange Function null TimeBar 时间范围变化时的回调函数,当不定义该函数时,时间范围变化时默认过滤图上的数据

TrendConfig 接口定义

暂不支持刻度文本的样式配置

  1. interface TrendConfig {
  2. // 数据
  3. readonly data: {
  4. date: string;
  5. value: string;
  6. }[];
  7. // 位置大小
  8. readonly x?: number;
  9. readonly y?: number;
  10. readonly width?: number;
  11. readonly height?: number;
  12. // 样式
  13. readonly smooth?: boolean;
  14. readonly isArea?: boolean;
  15. readonly lineStyle?: ShapeStyle;
  16. readonly areaStyle?: ShapeStyle;
  17. readonly interval?: Interval;
  18. }

TrendConfig 参数说明

名称 类型 默认值 描述
x number 0 趋势图开始 x 坐标
y number 0 趋势图开始 y 坐标
width number TimeBar 容器宽度 TimeBar 趋势图宽度,不建议自己设定,如果设定时需要同步设置 slider 中的 width 值
height number type=trend:默认为 28
type=simple:默认为 8
TimeBar 趋势图高度,不建议自己设定,如果设定时需要同步设置 slider 中的 height 值
smooth boolean false 是否是平滑的曲线
isArea boolean false 是否显示面积图
lineStyle ShapeStyle null 折线的样式配置
areaStyle ShapeStyle null 面积的样式配置项,只有当 isArea 为 true 时生效
interval Interval null 柱状图配置项,当配置了该项后,趋势图上会展现为混合图样式

SliderOption 接口定义

  1. export type SliderOption = Partial<{
  2. readonly width?: number;
  3. readonly height?: number;
  4. readonly backgroundStyle?: ShapeStyle;
  5. readonly foregroundStyle?: ShapeStyle;
  6. // 滑块样式
  7. readonly handlerStyle?: {
  8. width?: number;
  9. height?: number;
  10. style?: ShapeStyle;
  11. };
  12. readonly textStyle?: ShapeStyle;
  13. // 初始位置
  14. readonly start: number;
  15. readonly end: number;
  16. // 滑块文本
  17. readonly minText: string;
  18. readonly maxText: string;
  19. }>;

SliderOption 参数说明

名称 类型 默认值 描述
width number TimeBar 容器宽度 - 2 * padding 趋势图背景框宽度,不建议自己设定,如果设定时要同步修改 trend 中 width 值
height number 趋势图默认为 28
简易版默认为 8
TimeBar 趋势图高度,不建议自己设定,如果设定时需要同步设置 trend 中的 height 值
backgroundStyle ShapeStyle null 背景样式配置项
foregroundStyle ShapeStyle null 前景色样式配置,即选中范围的样式配置项
handlerStyle ShapeStyle null 滑块的样式配置项
textStyle ShapeStyle null 滑块上文本的样式配置项
start number 0.1 开始位置
end number 0.9 结束位置
minText string min 最小值文本
maxText string max 最大值文本

TimeBarSliceOption

  1. export interface TimeBarSliceOption {
  2. // position size
  3. readonly x?: number;
  4. readonly y?: number;
  5. readonly width?: number;
  6. readonly height?: number;
  7. readonly padding?: number;
  8. // styles
  9. readonly selectedTickStyle?: TickStyle;
  10. readonly unselectedTickStyle?: TickStyle
  11. readonly tooltipBackgroundColor?: string;
  12. readonly start?: number;
  13. readonly end?: number;
  14. // 数据
  15. readonly data: {
  16. date: string;
  17. value: string;
  18. }[];
  19. // 自定义标签格式化函数
  20. readonly tickLabelFormatter?: (d: any) => string | boolean;
  21. // 自定义 tooltip 内容格式化函数
  22. readonly tooltipFomatter?: (d: any) => string;
  23. }

TimeBarSliceOption 参数说明

名称 类型 默认值 描述
x number 0 刻度 TimeBar 开始 x 坐标
y number 0 刻度 TimeBar 开始 y 坐标
width 必选 number 刻度 TimeBar 宽度
height 必选 number 刻度 TimeBar 高度
padding number / number[] 0 刻度 TimeBar 距离边界的间距
selectedTickStyle ShapeStyle null 选中刻度的样式配置项
unselectedTickStyle ShapeStyle null 未选中刻度的样式配置项
tooltipBackgroundColor ShapeStyle null tooltip 背景框配置项
start number 0.1 开始位置
end number 0.9 结束位置
data 必选 [] [] 刻度时间轴的刻度数据
tickLabelFormatter Function null 刻度的格式化回调函数
tooltipFomatter Function null tooltip上内容格式化的回调函数

ControllerCfg 接口定义

暂不支持 控制按钮暂不支持配置样式 不支持循环播放

  1. type ControllerCfg = Partial<{
  2. readonly x?: number;
  3. readonly y?: number;
  4. readonly width: number;
  5. readonly height: number;
  6. /** 播放速度,1 个 tick 花费时间 */
  7. readonly speed?: number;
  8. /** 是否循环播放 */
  9. readonly loop?: boolean;
  10. readonly hiddleToggle: boolean;
  11. readonly fill?: string;
  12. readonly stroke?: string;
  13. readonly preBtnStyle?: ShapeStyle;
  14. readonly nextBtnStyle?: ShapeStyle;
  15. readonly playBtnStyle?: ShapeStyle;
  16. }>

ControllerCfg 参数说明

名称 类型 默认值 描述
x number 0 按钮控制组开始 x 坐标
y number 0 按钮控制组开始 y 坐标
width number TimeBar 宽度 控制按钮组宽度
height number 40 控制按钮组高度
speed number 1 播放速度
loop 暂不支持 boolean false 是否循环播放
hiddleToggle boolean true 是否隐藏时间类型切换
fill string 按钮控制组外层框填充色
stroke string 按钮控制组外层框边框色
preBtnStyle ShapeStyle null 后退按钮样式配置项
nextBtnStyle ShapeStyle null 前进按钮样式配置项
playBtnStyle ShapeStyle null 播放按钮样式配置项