- 构造函数
- 属性
- 方法
- data
- source
- coordinate
- coord
- animate
- axis
- annotation
- guide
- legend
- scale
- tooltip
- createView
- view
- facet
- interaction
- filter
- changeData
- changeSize
- changeVisible
- forceFit
- getCanvas
- getCoordinate
- getLayer
- getOptions
- getSnapRecords
- getTheme
- getTooltipItems
- getXScale
- getXY
- getYScales
- show
- hide
- option
- render
- clear
- destroy
- removeInteraction
- removeView
- showTooltip
- hideTooltip
- theme
- isTooltipLocked
- lockTooltip
- unlockTooltip
- updateOptions
- interval
- line
- path
- point
- polygon
- schema
- area
- edge
- heatmap
Chart 类,是使用 G2 进行绘图的入口。
构造函数
- new Chart(
chartCfg
): Chart
参数:
构造函数入参 chartCfg
是一个对象,可配置的属性如下:
属性名 | 说明 | 类型 | 默认值 |
---|---|---|---|
container |
指定 chart 绘制的 DOM,可以传入 DOM id,也可以直接传入 dom 实例。 | string | HTMLElement | |
autoFit |
图表是否自适应容器宽高,默认为 false,用户需要手动设置 width 和 height。当 autoFit: true 时,会自动取图表容器的宽高,如果用户设置了 height,那么会以用户设置的 height 为准。 |
boolean | false |
width |
图表宽度。 | number | - |
height |
图表高度。 | number | - |
padding |
设置图表的内边距,使用方式参考 CSS 盒模型。example 1. padding: 20 2. padding: [ 10, 30, 30 ] |
‘auto’ | number | number[] | ‘auto’ |
appendPadding |
图表的内边距会在图表的padding的基础上加上appendPadding,使用方式参考 CSS 盒模型。example 1. appendPadding: 20 2. appendPadding: [ 10, 30, 30 ] |
number | number[] | - |
defaultInteractions |
配置图表默认交互,仅支持字符串形式。 | string[] | ['tooltip', 'legend-filter', 'legend-active', 'continuous-filter'] |
limitInPlot |
是否对超出坐标系范围的 Geometry 进行剪切。 | boolean | - |
localRefresh |
是否开启局部刷新,默认开启。 | boolean | true |
pixelRatio |
设置设备像素比,默认取浏览器的值 window.devicePixelRatio 。 |
number | window.devicePixelRatio |
renderer |
指定渲染引擎,默认使用 canvas。 | ‘canvas’ | ‘svg’ | ‘canvas’ |
theme |
主题。 | object | string | - |
visible |
chart 是否可见,默认为 true,设置为 false 则会隐藏。 | boolean | true |
返回值: Chart
属性
获取方式:chart.destroyed
。
destroyed
• destroyed: boolean = false
标识 chart 对象是否已销毁。
ele
• ele: HTMLElement
Chart 的 DOM 容器。
geometries
• geometries: Geometry[] = []
所有的 geometry 实例。
height
• height: number
图表高度。
interactions
• interactions: Record‹string, Interaction›
所有的 Interaction 实例。
views
• views: View[] = []
所有的子 view。
方法
data
▸ data(data
): View
装载数据源。
view.data([{ city: '杭州', sale: 100 }, { city: '上海', sale: 110 } ]);
参数:
属性名 | 说明 | 类型 |
---|---|---|
data |
数据源,json 数组。 | object[] |
返回值: View
source
chart.data()
方法的别名。
coordinate
▸ coordinate(option
): CoordinateController
坐标系配置。
example
chart.coordinate({
type: 'polar',
cfg: {
radius: 0.85,
},
actions: [
[ 'transpose' ],
],
});
参数:
option
是一个对象,可配置的属性如下:
属性名 | 说明 | 类型 |
---|---|---|
type |
坐标系类型。 | “polar” | “theta” | “rect” | “cartesian” | “helix” |
cfg |
坐标系配置项,目前常用于极坐标,是一个对象,支持的属性如下:startAngle : number,用于极坐标,配置起始弧度。endAngle : number,用于极坐标,配置结束弧度。radius : number,用于极坐标,配置极坐标半径,0 - 1 范围的数值。innerRadius : number,用于极坐标,极坐标内半径,0 -1 范围的数值。 |
object |
actions |
坐标系变换操作: 1. rotate 表示旋转,使用弧度制。 2. scale 表示沿着 x 和 y 方向的缩放比率。 3. reflect 表示沿 x 方向镜像或者沿 y 轴方向映射。 4. transpose 表示 x,y 轴置换。 |
[ [“reflect”, “x” | “y”] [“rotate”, number] [“scale”, number, number] [“transpose”] ] |
返回值: CoordinateController
▸ coordinate(type
, coordinateCfg
): CoordinateController
声明坐标系类型,并进行配置。
// 直角坐标系,并进行转置变换
view.coordinate('rect').transpose();
// 默认创建直角坐标系
view.coordinate();
参数:
属性名 | 说明 | 类型 |
---|---|---|
type |
坐标系类型 | “polar” | “theta” | “rect” | “cartesian” | “helix” |
coordinateCfg |
坐标系配置项,目前常用于极坐标,是一个对象,支持的属性如下:startAngle : number,用于极坐标,配置起始弧度。endAngle : number,用于极坐标,配置结束弧度。radius : number,用于极坐标,配置极坐标半径,0 - 1 范围的数值。innerRadius : number,用于极坐标,极坐标内半径,0 -1 范围的数值。 |
object |
返回值: CoordinateController
坐标系变换操作:
view.coordinate().transpose().scale(1, 1).rotate(Math.PI * 0.4).reflect('x' | 'y' | 'xy');
coord
chart.coordinate()
方法别名。
animate
▸ animate(status
): View
参数:
属性名 | 说明 | 类型 |
---|---|---|
status |
是否开启动画。 | boolean |
返回值: View
axis
▸ axis(status
): View
开启或者关闭坐标轴。
view.axis(false); // 不展示坐标轴
参数:
属性名 | 说明 | 类型 |
---|---|---|
status |
坐标轴开关。 | boolean |
返回值: View
▸ axis(field
, axisOption
): View
对特定的某条坐标轴进行配置。
example
view.axis('city', false); // 不展示 'city' 字段对应的坐标轴
// 将 'city' 字段对应的坐标轴的标题隐藏
view.axis('city', {
title: null,
});
参数:
属性名 | 说明 | 类型 |
---|---|---|
field |
要配置的坐标轴对应的字段名称 | string |
axisOption |
坐标轴具体配置 | AxisOption |
axisOption
是一个对象,支持的属性配置如下:
{
/**
* 适用于直角坐标系,设置坐标轴的位置。
*/
position?: 'top' | 'bottom' | 'right' | 'left';
/**
* 坐标轴线的配置项,null 表示不展示。
*/
line?: {
style?: ShapeAttrs; // 坐标轴线的配置项
} | null;
/**
* 坐标轴刻度线线的配置项,null 表示不展示。
*/
tickLine?: {
style?: ShapeAttrs; // 坐标轴刻度线的样式配置项
alignTick?: boolean; // 是否同 tick 对齐
length?: number; // 长度
}| null;
/**
* 坐标轴子刻度线的配置项,null 表示不展示。
*/
subTickLine?: {
style?: ShapeAttrs; // 坐标轴刻度线的样式配置项
count?: number; // 子刻度个数
length?: number; // 子刻度线长度
} | null;
/**
* 标题的配置项,null 表示不展示。
*/
title?: {
offset?: number; // 标题距离坐标轴的距离
position: 'center', // 标题的位置 start, center, end
style?: ShapeAttrs; // 标题文本配置项
autoRotate?: boolean; // 是否自动旋转
}| null;
/**
* 文本标签的配置项,null 表示不展示。
*/
label?: {
style?: ShapeAttrs; // 坐标轴文本的样式
offset?: number; // label 的偏移量
rotate?: number; // 文本旋转角度
formatter?: (text: string, item: ListItem, index: number) => any; // 格式化函数
autoRotate?: boolean | (isVertical: boolean, labelGroup: IGroup, limitLength?: number) => boolean; | string; // 是否自动旋转,默认 true
autoHide?: boolean | (isVertical: boolean, labelGroup: IGroup, limitLength?: number) => boolean; | string; // 是否自动隐藏,默认 false
autoEllipsis?: boolean | (isVertical: boolean, labelGroup: IGroup, limitLength?: number) => boolean; | string; // 是否自动省略,默认 false
} | null;
/** 坐标轴网格线的配置项,null 表示不展示。 */
grid?: {
/**
* 线的样式。
*/
line?: {
type?: string; // 栅格线的类型,'line' 或者 'circle'
style?: ShapeAttrs; // 栅格线的样式配置项
};
/**
* 两个栅格线间的填充色。
*/
alternateColor?: string | string[];
/**
* 对于 circle 是否关闭 grid。
*/
closed?: boolean;
/**
* 是否同刻度线对齐,如果值为 false,则会显示在两个刻度中间。
*/
alignTick?: boolean;
} | null;
/** 动画开关,默认开启。 */
animate?: boolean;
/** 动画参数配置。 */
animateOption?: {
/** 初入场动画配置 */
appear?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
/** 更新动画配置 */
update?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
/** 更新后新入场的动画配置 */
enter?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
/** 离场动画配置 */
leave?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
};
/** 标记坐标轴 label 的方向,左侧为 1,右侧为 -1。 */
verticalFactor?: number;
/**
* 配置坐标轴垂直方向的最大限制长度,对文本自适应有很大影响。
* 1. 可以直接设置像素值,如 100;
* 2. 也可设置绝对值,如 0.2,如果是 x 轴,则相对于图表的高度,如果是 y 轴,则相对于图表的宽度
*
* 在 G2 中,x 轴的文本默认最大高度为图表高度的 1/2,y 轴的文本默认最大长度为图表宽度的 1/3
*/
verticalLimitLength?: number;
}
返回值: View
annotation
annotation().(cfg
)
辅助标记配置。
view.annotation().line({
start: ['min', 85],
end: ['max', 85],
style: {
stroke: '#595959',
lineWidth: 1,
lineDash: [3, 3],
},
});
cfg
是一个对象,根据不同的 Annotation 类型对应不同的配置属性。
通用配置
• animate? : boolean
是否进行动画。
• animateOption? : object
动画参数配置,当且仅当 animate
属性为 true,即动画开启时生效。是一个对象,支持的属性如下:
{
/** 初入场动画配置 */
appear?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
/** 更新动画配置 */
update?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
/** 更新后新入场的动画配置 */
enter?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
/** 离场动画配置 */
leave?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
}
• offsetX? : number
x 方向的偏移量。
• offsetY? : number
y 方向的偏移量。
• style? : object
图形样式属性。
• top? : boolean
指定 annotation 是否绘制在 canvas 最上层,默认为 false, 即绘制在最下层。
位置属性配置
Annotation 为位置定位支持三种类型配置:
- object: 使用图表 x, y 对应的原始数据例如: { time: ‘2010-01-01’, value: 200 }
- array: 数组来配置位置 [ x, y ],根据数组中的值的存在以下几种形式:
a. 对应数据源中的原始数据;
b. 关键字:’min’、’max’、’median’、’start’、’end’ 分别代表数据的最大值、最小值、中间值以及坐标系区间的起始和结束;
c. x, y 都是百分比的形式,如 30%,在绘图区域定位(即坐标系内)
说明 a 和 b 两种类型的数据可以混用,但是使用百分比形式时 x 和 y 必须都是百分比形式。
- function: 回调函数,可以动态得确定辅助元素的位置,应用于数据动态更新,辅助元素的位置根据数据变化的场景
chart.annotation().line({
start(xScales, yScales) {
return []; // 位置信息
}
});
▸ annotation().line()
绘制辅助线。
说明: 以下只列出 Line 类型特有的配置项,其余通用配置项见上述。
chart.annotation().line({
/** 起始位置,详见位置属性配置 */
start: AnnotationPosition,
/** 结束位置,详见位置属性配置 */
end: AnnotationPosition,
/** 文本配置定义 */
text?: {
/**
* 文本位置,除了制定 'start', 'center' 和 'end' 外,还可以使用百分比进行定位, 比如 '30%'。
*/
position: 'start' | 'center' | 'end' | string,
/** 是否自动旋转 */
autoRotate?: boolean,
/** 显示的文本内容 */
content: string,
/** 文本的图形样式属性 */
style?: object,
/** x 方向的偏移量 */
offsetX?: number,
/** y 方向偏移量 */
offsetY?: number,
};
});
▸ annotation().text()
绘制辅助文本。
说明: 以下只列出 Text 类型特有的配置项,其余通用配置项见上述。
chart.annotation().text({
/** Point 定位位置,详见位置属性配置 */
position: AnnotationPosition,
/** 显示的文本内容 */
content: string | number,
/** 文本的旋转角度,弧度制 */
rotate?: number,
});
▸ annotation().arc()
绘制辅助弧线,只适用于极坐标。
说明: 以下只列出 Arc 类型特有的配置项,其余通用配置项见上述。
chart.annotation().arc({
/** 起始位置,详见位置属性配置*/
start: AnnotationPosition,
/** 结束位置,详见位置属性配置 */
end: AnnotationPosition,
});
▸ annotation().image()
绘制辅助图片。
说明: 以下只列出 Image 类型特有的配置项,其余通用配置项见上述。
chart.annotation().image({
/** 图片路径 */
src: string,
});
▸ annotation().region()
绘制辅助区域。
说明: 以下只列出 Region 类型特有的配置项,其余通用配置项见上述。
chart.annotation().region({
/** 起始位置,详见位置属性配置*/
start: AnnotationPosition,
/** 结束位置,详见位置属性配置 */
end: AnnotationPosition,
});
▸ annotation().dataMarker()
绘制辅助数据标注。
说明: 以下只列出 DataMarker 类型特有的配置项,其余通用配置项见上述。
chart.annotation().dataMarker({
/** Point 定位位置,详见位置属性配置 */
position: AnnotationPosition,
/** point 设置 */
point?: null | {
style?: object // 样式
},
/** line 设置 */
line?: null | {
style?: object, // 样式
length?: number // 长度
},
/** text 设置 */
text: null | {
style?: object, // 样式
content: string // 文本内容
},
/** 文本超出绘制区域时,是否自动调节文本方向,默认为 true */
autoAdjust?: boolean,
/** 朝向,默认为 upward,可选值为 'upward' 或者 'downward' */
direction?: 'upward' | 'downward',
});
▸ annotation().dataRegion()
绘制辅助数据标注区间。
说明: 以下只列出 DataRegion 类型特有的配置项,其余通用配置项见上述。
chart.annotation().dataRegion({
/** 起始位置,详见位置属性配置*/
start: AnnotationPosition,
/** 结束位置,详见位置属性配置 */
end: AnnotationPosition,
/** line长度,default为 0 */
lineLength?: number,
/** 标注区间的配置 */
region?: null | {
style?: object // 文本样式
},
/** 文本的配置 */
text?: null | {
style?: object, // 文本样式
content: string // 文本内容
},
});
▸ annotation().regionFilter()
绘制过滤区间。
说明: 以下只列出 RegionFilter 类型特有的配置项,其余通用配置项见上述。
chart.annotation().regionFilter({
/** 起始位置,详见位置属性配置*/
start: AnnotationPosition,
/** 结束位置,详见位置属性配置 */
end: AnnotationPosition,
/** 染色色值 */
color: string;
/* 可选,设定regionFilter只对特定geom类型起作用,如 `apply:['area']` */
apply?: string[];
});
guide
chart.annotation()
方法的别名。
legend
▸ legend(cfg
): View
对图例进行整体配置。
view.legend(false); // 关闭图例
view.legend({
position: 'right',
}); // 图例进行整体配置
参数:
属性名 | 说明 | 类型 |
---|---|---|
cfg |
图例的开关或者详细配置 | boolean | object |
cfg
是对象类型时,用于对图例进行统一配置(因为 G2 中图表可包含多个图例),cfg
作为对象包含的配置属性如下:
• animate? : boolean
动画开关,默认关闭。
• animateOption? : object
动画参数配置,当且仅当 animate
属性为 true,即动画开启时生效。是一个对象,支持的属性如下:
{
/** 初入场动画配置 */
appear?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
/** 更新动画配置 */
update?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
/** 更新后新入场的动画配置 */
enter?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
/** 离场动画配置 */
leave?: {
/** 动画执行时间 */
duration?: number;
/** 动画缓动函数 */
easing?: string;
/** 动画延迟时间 */
delay?: number;
};
}
• background? : object
背景框配置项。
属性结构如下:
{
padding?: number | number[]; // 背景的留白
style?: ShapeAttrs; // 背景样式配置项
}
• custom? : boolean
是否为自定义图例,当该属性为 true 时,需要声明 items 属性。
• flipPage? : boolean
适用于分类图例,当图例项过多时是否进行分页。
• handler? : object
连续图例适用,滑块的配置项。
属性结构如下:
{
size?: number; // 滑块的大小
style?: ShapeAttrs; // 滑块的样式设置
}
• itemHeight? : number
分类图例适用,图例的高度,默认为 null。
• itemName? : object
分类图例适用,图例项 name 文本的配置。属性结构如下:
{
spacing?: number; // 图例项 name 同后面 value 的间距
formatter?: (text: string, item: ListItem, index: number) => any; // 格式化文本函数
style?: ShapeAttrs; // 文本配置项
}
• itemSpacing? : number
分类图例适用,控制图例项水平方向的间距。
• itemValue? : object
分类图例适用,图例项 value 附加值的配置项。属性结构如下:
{
alignRight?: boolean; // 是否右对齐,默认为 false,仅当设置图例项宽度时生效
formatter?: (text: string, item: ListItem, index: number) => any; // 格式化文本函数
style?: ShapeAttrs; // 图例项附加值的配置
}
• itemWidth? : number
分类图例适用,图例项的宽度, 默认为 null,自动计算。
• items? : object[]
分类图例适用,用户自己配置图例项的内容。每一项 item 是一个对象,需要包含如下属性:
{
/**
* 唯一值,用于动画或者查找
*/
id?: string;
/** 名称 */
name: string;
/** 值 */
value: any;
/** 图形标记 */
marker?: {
/**
* 图例项 marker 同后面 name 的间距
*/
spacing?: number;
/**
* 图例 marker 形状
*/
symbol?: string | ((x: number, y: number, r: number) => any);
/**
* 图例项 marker 的配置项
*/
style?: ShapeAttrs;
/** 配置图例 marker 的 symbol 形状。 */
symbol?: 'circle'
| 'square'
| 'diamond'
| 'triangle'
| 'triangleDown'
| 'hexagon'
| 'bowtie'
| 'cross'
| 'tick'
| 'plus'
| 'hyphen'
| 'line' | (x: number, y: number, r: number) => PathCommand;;
};
}
• label? : object
连续图例适用,文本的配置项。属性结构如下:
{
// 文本同滑轨的对齐方式,有五种类型
// rail : 同滑轨对齐,在滑轨的两端
// top, bottom: 图例水平布局时有效
// left, right: 图例垂直布局时有效
align?: string;
spacing?: number; // 文本同滑轨的距离
style?: ShapeAttrs; // 文本样式
}
• layout? : “horizontal” | “vertical”
布局方式: horizontal,vertical
• marker? : object
分类图例适用,图例项的 marker 图标的配置。属性结构如下:
{
/**
* 图例项 marker 同后面 name 的间距
*/
spacing?: number;
/**
* 图例 marker 形状
*/
symbol?: string | ((x: number, y: number, r: number) => any);
/**
* 图例项 marker 的配置项
*/
style?: ShapeAttrs;
/** 配置图例 marker 的 symbol 形状。 */
symbol?: 'circle'
| 'square'
| 'diamond'
| 'triangle'
| 'triangleDown'
| 'hexagon'
| 'bowtie'
| 'cross'
| 'tick'
| 'plus'
| 'hyphen'
| 'line' | (x: number, y: number, r: number) => PathCommand;;
}
• max? : number
连续图例适用,选择范围的最大值。
• maxHeight? : number
分类图例适用,图例项最大高度设置。
• maxWidth? : number
分类图例适用,图例项最大宽度设置。
• min? : number
连续图例适用,选择范围的最小值。
• offsetX? : number
图例 x 方向的偏移。
• offsetY? : number
图例 y 方向的偏移。
• position? : “top” | “top-left” | “top-right” | “right” | “right-top” | “right-bottom” | “left” | “left-top” | “left-bottom” | “bottom” | “bottom-left” | “bottom-right”
图例的位置。
• rail? : object
连续图例适用,图例滑轨(背景)的样式配置项。属性结构如下:
{
type?: string; // rail 的类型,color, size
size?: number; // 滑轨的宽度
defaultLength?: number; // 滑轨的默认长度,,当限制了 maxWidth,maxHeight 时,不会使用这个属性会自动计算长度
style?: ShapeAttrs; // 滑轨的样式
}
• reversed? : boolean
分类图例适用,是否将图例项逆序展示。
• slidable? : boolean
连续图例适用,滑块是否可以滑动。
• title? : object
图例标题配置,默认不展示。属性结构如下:
{
spacing?: number; // 标题同图例项的间距
style?: ShapeAttrs; // 文本样式配置项
}
• track? : object
连续图例适用,选择范围的色块样式配置项。属性结构如下:
{
style?: ShapeAttrs; // 选定范围的样式
}
• value? : number[]
连续图例适用,选择的值。
▸ legend(field
: string, legendOption
): View
对 field
字段对应的图例进行配置。
example
view.legend('city', false); // 关闭某个图例,通过数据字段名进行关联
// 对特定的图例进行配置
view.legend('city', {
position: 'right',
});
参数:
属性名 | 说明 | 类型 |
---|---|---|
field |
图例对应的数据字段名称 | string |
legendOption |
图例配置,详细的配置已在 legend(cfg) 中说明,此处不赘述 |
object |
scale
▸ scale(cfg
): View
批量设置 scale 配置。
view.scale({
sale: {
min: 0,
max: 100,
}
});
参数:
属性名 | 说明 | 类型 |
---|---|---|
cfg |
是一个对象,以数据字段名为 key | object |
cfg
是一个对象,可支持的属性如下:
• type? : string
声明度量类型:’linear’ | ‘cat’ | ‘category’ | ‘identity’ | ‘log’ | ‘pow’ | ‘time’ | ‘timeCat’ | ‘quantize’ | ‘quantile’。
• key? : boolean
用于声明使用数据记录中的哪些字段来组成一条数据的唯一 id(如有多个字段,则使用 ‘-‘ 连接)。
数据 id 用于标识 Element 图形元素,应用于 Geometry 中的图形元素 Element 更新。
默认 G2 内部会有一套 ID 生成规则,如果不能满足用户需求,用户既可以使用该属性配置 id。
example
下面的例子中,声明了将 ‘x’ 和 ‘y’ 字段的数值来作为每条数据记录的 id,即下面数据两条数据的 id 分别为:’1-23’ 和 ‘2-2’。
const data = [
{ x: 1, y: 23, z: 'a' },
{ x: 2, y: 2, z: 'b' },
];
chart.scale({
x: { key: true },
y: { key: true },
});
• showLast? : boolean
只对 type: ‘time’ 的 scale 生效,强制显示最后的日期 tick。
• sync? : boolean | string
同步 scale。
example
chart.scale({
x: { sync: true },
y: { sync: true },
x1: { sync: 'x1' },
x2: { sync: 'x1' },
});
通过以上配置,我们会分别对 x 和 y 两个字段,x1 和 x2 两个字段进行同步度量操作。
• field? : string
对应的字段属性名。
• values? : any[]
输入域、定义域。
• min? : any
定义域的最小值,d3为domain,ggplot2为limits,分类型下无效。
• max? : any
定义域的最大值,分类型下无效。
• minLimit? : any
严格模式下的定义域最小值,设置后会强制 ticks 从最小值开始。
• maxLimit? : any
严格模式下的定义域最大值,设置后会强制 ticks 已最大值结束。
• alias? : string
数据字段的显示别名,scale内部不感知,外部注入。
• range? : [number, number]
输出域、值域,默认值为[0, 1]。
• base? : number
Log有效,底数。
• exponent? : number
Pow有效,指数。
• nice? : boolean
自动调整min、max 。
• ticks? : any[]
用于指定tick,优先级最高。
• tickInterval? : number
tick间隔,只对分类型和时间型适用,优先级高于tickCount。
• minTickInterval? : number
tick最小间隔,只对线型适用。
• tickCount? : number
tick个数,默认值为5。
• maxTickCount? : number
ticks最大值,默认值为10。
• formatter? : (v: any, k?: number) => any;
tick格式化函数,会影响数据在坐标轴 axis、图例 legend、tooltip 上的显示。
• tickMethod? : string | TickMethod
计算 ticks 的算法。
• mask? : string
时间度量 time, timeCat 时有效。
说明:不同类型的 Scale 支持的配置不同,详见 Scale。
返回值: View
▸ scale(field
: string, scaleOption
): View
为 field
对应的数据字段进行 scale 配置。
view.scale('sale', {
min: 0,
max: 100,
});
参数:
属性名 | 说明 | 类型 |
---|---|---|
field |
数据字段名 | string |
scaleOption |
scale 配置,同 scale(cfg) 中的配置属性,此处不再赘述 |
object |
tooltip
▸ tooltip(cfg
): View
tooltip 提示信息配置。
view.tooltip(false); // 关闭 tooltip
view.tooltip({
shared: true
});
参数:
属性名 | 说明 | 类型 |
---|---|---|
cfg |
Tooltip 配置 | boolean | object |
cfg
是一个对象,可配置的属性如下:
• container? : string | HTMLElement
自定义 tooltip 的容器。
• containerTpl? : string
用于指定图例容器的模板,自定义模板时必须包含各个 dom 节点的 class。
• crosshairs? : object
配置 tooltip 的 crosshairs,当且仅当 showCrosshairs
为 true 时生效。是一个对象,可配置属性如下:
属性名 | 说明 | 类型 |
---|---|---|
follow |
辅助线是否跟随鼠标移动,默认为 false,即定位到数据点 | boolean |
line |
辅助线的样式配置。属性结构如下: { style?: ShapeAttrs; // 线的样式配置 } |
object |
text |
辅助线文本配置,支持回调。{ autoRotate?: boolean; // 是否自动旋转 style?: ShapeAttrs; // 文本的配置项 position?: string; // 文本位置,只支持 start, end content?: string; // 文本内容 offset?: number; // 距离线的距离 content?: string; // crosshairs 文本内容 } 或者可以是一个大的回调,回调按需返回上述配置: (type: string, defaultContent: any, items: any[], currentPoint: Point) => TooltipCrosshairsText |
object |
textBackground |
辅助线文本背景配置。属性结构如下: { padding?: number | number[]; // 文本背景周围的留白 style?: ShapeAttrs; // 文本背景的样式 } |
boolean | object |
type |
crosshairs 的类型: x 表示 x 轴上的辅助线,y 表示 y 轴上的辅助项。下表是在不同坐标系下,crosshairs 各个类型的表现。 |
“x” | “y” | “xy” |
• domStyles? : object
传入各个 dom 的样式。
{
'g2-tooltip'?: LooseObject;
'g2-tooltip-title'?: LooseObject;
'g2-tooltip-list'?: LooseObject;
'g2-tooltip-list-item'?: LooseObject;
'g2-tooltip-marker'?: LooseObject;
'g2-tooltip-value'?: LooseObject;
'g2-tooltip-name'?: LooseObject;
}
• enterable? : boolean
tooltip 是否允许鼠标滑入,默认为 false,不允许
• follow? : boolean
设置 tooltip 内容框是否跟随鼠标移动。
默认为 true,跟随鼠标移动,false 则固定位置不随鼠标移动。
• itemTpl? : string
每项记录的默认模板,自定义模板时必须包含各个 dom 节点的 class。
• marker? : object
tooltipMarker 的样式配置。
• offset? : number
tooltip 偏移量。
• position? : “top” | “bottom” | “left” | “right”
设置 tooltip 的固定展示位置,相对于数据点。
• shared? : boolean
true 表示合并当前点对应的所有数据并展示,false 表示只展示离当前点最逼近的数据内容。
• showContent? : boolean
是否展示 tooltip 内容框。
• showCrosshairs? : boolean
是否展示 crosshairs。
• showMarkers? : boolean
是否渲染 tooltipMarkers。
• showTitle? : boolean
是否展示 tooltip 标题。
• title? : string
设置 tooltip 的标题内容:如果值为数据字段名,则会展示数据中对应该字段的数值,如果数据中不存在该字段,则直接展示 title 值。
createView
▸ createView(cfg
): View
创建子 view。
const innerView = view.createView({
region: {
start: { x: 0, y: 0 },
end: { x: 0.5, y: 0.5 },
},
padding: 8,
});
参数:
属性名 | 说明 | 类型 |
---|---|---|
cfg |
创建 View 需要的传入的配置 | object |
cfg
是一个对象,需要配置的属性如下:
• region? : object
view 的绘制范围。
{
start: { x: number, y: number };
end: { x: number, y: number };
}
view
chart.createView()
方法别名。
facet
▸ facet‹T›(type
, cfg
): View
view 分面绘制。
view.facet('rect', {
rowField: 'province',
columnField: 'category',
eachView: (innerView: View, facet?: FacetData) => {
innerView.line().position('city*sale');
},
});
参数:
属性名 | 说明 | 类型 |
---|---|---|
type |
分面类型 | ‘rect’、’mirror’、’list’、’matrix’、’circle’、’tree’ |
cfg |
分面配置,不同类型的分面配置不同 | object |
矩形分面
chart.facet('rect', {
/** view 创建回调。 */
eachView: (innerView: View, facet?: D) => any;
/** facet view padding。 */
padding?: number | number[];
/** 是否显示标题。 */
showTitle?: boolean;
/** facet 数据划分维度。 */
fields: string[];
/** 行标题的样式。 */
columnTitle?: {
/** x 方向偏移。 */
offsetX?: number;
/** y 方向偏移。 */
offsetY?: number;
/** 文本样式。 */
style?: object;
};
/** 列标题的样式。 */
rowTitle?: {
/** x 方向偏移。 */
offsetX?: number;
/** y 方向偏移。 */
offsetY?: number;
/** 文本样式。 */
style?: object;
};
});
镜像分面
chart.facet('mirror', {
/** view 创建回调。 */
eachView: (innerView: View, facet?: D) => any;
/** facet view padding。 */
padding?: number | number[];
/** 是否显示标题。 */
showTitle?: boolean;
/** facet 数据划分维度。 */
fields: string[];
/** 是否转置。 */
transpose?: boolean;
/** 标题样式。 */
title?:{
/** x 方向偏移。 */
offsetX?: number;
/** y 方向偏移。 */
offsetY?: number;
/** 文本样式。 */
style?: object;
};
});
list 分面
chart.facet('list', {
/** 指定每行可显示分面的个数,超出时会自动换行。 */
cols?: number;
/** 标题样式。 */
title?:{
/** x 方向偏移。 */
offsetX?: number;
/** y 方向偏移。 */
offsetY?: number;
/** 文本样式。 */
style?: object;
};
/** view 创建回调。 */
eachView: (innerView: View, facet?: D) => any;
/** facet view padding。 */
padding?: number | number[];
/** 是否显示标题。 */
showTitle?: boolean;
/** facet 数据划分维度。 */
fields: string[];
});
matrix 分面
chart.facet('matrix', {
/** 行标题的样式。 */
columnTitle?: {
/** x 方向偏移。 */
offsetX?: number;
/** y 方向偏移。 */
offsetY?: number;
/** 文本样式。 */
style?: object;
};
/** 列标题的样式。 */
rowTitle?: {
/** x 方向偏移。 */
offsetX?: number;
/** y 方向偏移。 */
offsetY?: number;
/** 文本样式。 */
style?: object;
};
/** view 创建回调。 */
eachView: (innerView: View, facet?: D) => any;
/** facet view padding。 */
padding?: number | number[];
/** 是否显示标题。 */
showTitle?: boolean;
/** facet 数据划分维度。 */
fields: string[];
});
circle 分面
chart.facet('circle', {
/** 分面标题配置。 */
title?: {
/** x 方向偏移。 */
offsetX?: number;
/** y 方向偏移。 */
offsetY?: number;
/** 文本样式。 */
style?: object;
};
/** view 创建回调。 */
eachView: (innerView: View, facet?: D) => any;
/** facet view padding。 */
padding?: number | number[];
/** 是否显示标题。 */
showTitle?: boolean;
/** facet 数据划分维度。 */
fields: string[];
});
tree 分面
chart.facet('tree', {
/** 分面标题配置。 */
title?: {
/** x 方向偏移。 */
offsetX?: number;
/** y 方向偏移。 */
offsetY?: number;
/** 文本样式。 */
style?: object;
};
/** 边的配置 */
line?: {
style?: ShapeAttrs;
smooth?: boolean;
};
/** view 创建回调。 */
eachView: (innerView: View, facet?: D) => any;
/** facet view padding。 */
padding?: number | number[];
/** 是否显示标题。 */
showTitle?: boolean;
/** facet 数据划分维度。 */
fields: string[];
});
返回值: View
interaction
▸ interaction(name
, cfg
): View
view.interaction('my-interaction', { extra: 'hello world' });
详细文档可以参考:https://g2.antv.vision/zh/docs/manual/tutorial/interaction
参数:
属性名 | 说明 | 类型 |
---|---|---|
name |
交互名称 | string |
cfg? |
交互配置 | object |
返回值: View
filter
▸ filter(field
, condition
): View
设置数据筛选规则。
view.filter('city', (value: any, datum: Datum) => value !== '杭州');
// 删除 'city' 字段对应的筛选规则。
view.filter('city', null);
参数:
属性名 | 说明 | 类型 |
---|---|---|
field |
数据字段 | string |
condition |
筛选规则 | (value, record) => boolean; value : 代表当前 field 字段对应的值;record : 代表当前数据记录 |
返回值: View
changeData
▸ changeData(data
): Chart
修改数据,数据更新逻辑,数据更新仅仅影响当前这一层的 Chart。
chart.changeData([{ city: '北京', sale: '200' }]);
参数:
属性名 | 说明 | 类型 |
---|---|---|
data |
JSON 数组,同时结构需要同初始化加载的数据结构一致 | object[] |
返回值: Chart
changeSize
▸ changeSize(width
, height
): Chart
改变图表大小,同时重新渲染。
参数:
属性名 | 说明 | 类型 |
---|---|---|
width |
图表宽度 | number |
height |
图表高度 | number |
返回值: Chart
changeVisible
▸ changeVisible(visible
): Chart
显示或隐藏图表。
参数:
属性名 | 说明 | 类型 |
---|---|---|
visible |
是否可见,true 表示显示,false 表示隐藏 | boolean |
返回值: Chart
forceFit
▸ forceFit(): void
自动根据容器大小 resize 画布。
返回值: void
getCanvas
▸ getCanvas(): ICanvas
获取 G.Canvas 实例。
返回值: ICanvas G.Canvas 画布实例。
getCoordinate
▸ getCoordinate(): Coordinate‹›
获取当前坐标系实例。
返回值: Coordinate‹›
getLayer
▸ getLayer(layer
): IGroup
获得绘制的层级 group。
参数:
属性名 | 说明 | 类型 |
---|---|---|
layer |
层级名称 | “bg” | “fore” | “mid” |
返回值: IGroup 对应层级的 Group。
getOptions
▸ getOptions(): Options
返回所有配置信息。
返回值: Options 所有的 view API 配置。
getSnapRecords
▸ getSnapRecords(point
): object[]
获取逼近的点的数据集合。
参数:
属性名 | 说明 | 类型 |
---|---|---|
point |
当前坐标点 | {x: number, y: number} |
返回值: object[]
getTheme
▸ getTheme(): object
获取当前 view 的主题配置。
返回值: object
getTooltipItems
▸ getTooltipItems(point
): object[]
获取当前 point 对应的 tooltip 数据项。
参数:
属性名 | 说明 | 类型 |
---|---|---|
point |
坐标点 | {x: number, y: number} |
返回值: object[]
getXScale
▸ getXScale(): Scale
获得 x 轴字段的 scale 实例。
返回值: Scale
getXY
▸ getXY(data
): object
获取该数据在可视化后,对应的画布坐标点。
参数:
属性名 | 说明 | 类型 |
---|---|---|
data |
原始数据记录 | object |
返回值: object 对应的画布坐标点。
getYScales
▸ getYScales(): Scale[]
获取 y 轴字段的 scales 实例。
返回值: Scale[]
view 中 Geometry 对于的 y scale 数组。
show
▸ show(): void
显示图表。
hide
▸ hide(): void
隐藏。
返回值: void
option
▸ option(name
, opt
): View
往 view.options
属性中存储配置项。
参数:
属性名 | 说明 | 类型 |
---|---|---|
name |
属性名称 | string |
opt |
属性值,不同的配置结构不同 | any |
返回值: View
render
▸ render(isUpdate
: boolean): void
生命周期:渲染流程,渲染过程需要处理数据更新的情况。
render 函数仅仅会处理 view 和子 view。
参数:
属性名 | 说明 | 类型 |
---|---|---|
isUpdate |
是否触发更新流程。默认为 false。 | boolean |
返回值: void
clear
▸ clear(): void
生命周期:清空图表上所有的绘制内容,但是不销毁图表,chart 仍可使用。
返回值: void
destroy
▸ destroy(): void
销毁图表,同时解绑事件,销毁创建的 G.Canvas 实例。
返回值: void
removeInteraction
▸ removeInteraction(name
): void
移除当前 View 的 interaction。
view.removeInteraction('my-interaction');
参数:
属性名 | 说明 | 类型 |
---|---|---|
name |
交互名称 | string |
返回值: void
removeView
▸ removeView(view
): View
删除一个子 view
参数:
属性名 | 说明 | 类型 |
---|---|---|
view |
要删除的 View 实例 | View |
返回值: View
返回值: void
showTooltip
▸ showTooltip(point
): View
显示 point 坐标点对应的 tooltip。
参数:
属性名 | 说明 | 类型 |
---|---|---|
point |
画布坐标点 | {x: number, y: number} |
返回值: View
hideTooltip
▸ hideTooltip(): View
隐藏 tooltip。
返回值: View
theme
▸ theme(theme
): View
设置主题。
view.theme('dark'); // 'dark' 需要事先通过 `registerTheme()` 接口注册完成
view.theme({ defaultColor: 'red' });
参数:
属性名 | 说明 | 类型 |
---|---|---|
theme |
主题名或者主题配置 | string | object |
返回值: View
isTooltipLocked
▸ isTooltipLocked(): boolean
是否锁定 tooltip。
返回值: boolean
lockTooltip
▸ lockTooltip(): View
将 tooltip 锁定到当前位置不能移动。
返回值: View
unlockTooltip
▸ unlockTooltip(): View
将 tooltip 锁定解除。
返回值: View
updateOptions
▸ updateOptions(options
): View
更新配置项,用于配置项式声明。
参数:
属性名 | 说明 | 类型 |
---|---|---|
options |
配置项 | Options |
返回值: View
interval
▸ interval( cfg
): Interval
创建 Interval 几何标记。
**
line
▸ line(cfg
): Line
创建 Line 几何标记。
path
▸ path(cfg
): Path
创建 Path 几何标记。
point
▸ point(cfg
: Point
创建 Point 几何标记。
polygon
▸ polygon(cfg
): Polygon
创建 Polygon 几何标记。
schema
▸ schema(cfg
): Schema
创建 Schema 几何标记。
area
▸ area(cfg
): Area
创建 Area 几何标记。**
edge
▸ edge(cfg
): Edge
创建 Edge 几何标记。**
heatmap
▸ heatmap(cfg
): Heatmap
创建 Heatmap 几何标记。
**