获取方式: G2.Chart

创建一个具体的图表实例。

  1. var chart = new G2.Chart({
  2. id: 'c1',
  3. width: 1000,
  4. height: 500,
  5. plotCfg: {
  6. margin: [10, 20, 10, 20],
  7. }
  8. });

属性

以下属性是创建 chart 图表实例时可配置的属性:

id

类型:String

对应图表的 DOM 容器的 id。

container

类型:HTMLDivElement

除了传递 id 值来指定图表容器,也支持直接传入容器的 html 节点对象,如下所示:

  1. var chart = new G2.Chart({
  2. container: document.getElementById('c1'),
  3. width : 1000,
  4. height : 500
  5. });

通过调用 chart.get('container') 可获取该属性。

forceFit

类型:Boolean

设置图表的宽度是否自适应,默认为 false,设置为 true,则图表 chart 会继承父元素的宽度,用户设置的 width 则不生效。

syncXYScales

类型:Boolean

chart 下创建了多个视图 view 的时候,通过设置该属性指定是否需要统一所有视图的 X 和 Y 度量,默认为 false,当设置为 true 时,会对 x y 两个维度对应的线性度量进行统一,默认会按照范围最大的度量为标准进行统一。但对于在 chart 或者 view 上进行了列定义的度量则不参与统一步骤:

  • 如果在 chart 上对 x 、y 两个维度对应的字段进行了列定义,则会按照此列定义为准,并且该 chart 下的 views 也以此列定义为准;
  • 如果 chart 中的 view 也进行了列定义,那么就以自己的列定义为准。

示例: 地图

width

类型:Number

设置图表的宽度。

height

类型:Number

设置图表的高度。

pixelRatio

类型:Number

设置像素分辨率。

data

类型:Array

设置图表的数据源,data 是一个包含 JSON 对象的数组。

通常我们会使用 chart.source(data[, colDef, namesArr]) 设置数据源。

animate

类型:Boolean

chart 是否执行动画,默认值为 true,执行, false 不执行。

plotCfg

类型:Object

设置图表绘图区域的配置信息,包括外边距、边框、背景等信息。

图表布局如下图所示:

image

橙色区域为 background,灰色区域为 border

支持的配置属性:

  1. var plotCfg = {
  2. margin: [10,20,20,30], // 边距设置,接受参数同 css 的 margin
  3. border: {
  4. stroke: 'red', // 边框颜色
  5. strokeOpacity: 0.4, // 边框的透明度设置,0 至 1 范围的数据
  6. lineWidth: 1, // 边框粗细
  7. fill: '#ff8800' // 设置整个容器的背景色
  8. fillOpacity: 0.4, // 背景色的透明度设置,0 至 1 范围的数据
  9. radius: 5 // 边框的圆角
  10. }, // 边框设置 图形属性
  11. background: {
  12. stroke: 'red', // 边颜色
  13. strokeOpacity: 0.4, // 边框的透明度设置,0 至 1 范围的数据
  14. lineWidth: 1, // 边框粗细
  15. fill: '#efefef', // 背景色
  16. fillOpacity: 0.4, // 背景色的透明度设置,0 至 1 范围的数据
  17. radius: 30 // 圆角设置
  18. } // 绘图区域背景设置
  19. };

通过 chart.get('attrName') 可以获取如下只读属性:

canvas

类型:G2.Canvas

在教程 G2 图表的主要组成章节中提到,G2 绘制的图表由三层 canvas 组成,其中 canvas 用于绘制 geom

frontCanvas

类型:G2.Canvas

最上层的 canvas,图例 legend提示信息 tooltip、和 text tag html 这三种类型的辅助标记 guide 在这一层绘制。

backCanvas

类型:G2.Canvas

最下层的 canvas,坐标轴 axisline image rect arc 这四种类型的辅助标记 guide 在这一层绘制。

plotRange

类型:Object

该属性包含整个图表的绘图区域范围内各个关键坐标点的信息。通过调用 chart.get('plotRange') 获取。

image

具体结构如下:

  1. {
  2. 'start': {'x':100,'y':320}, // 绘图区域起始点坐标,可以理解为坐标系原点
  3. 'end': {'x':720,'y':40}, // 绘图区域结束点坐标
  4. 'tl': {'x':100,'y':40}, // 绘图区域左上角点坐标,top-left
  5. 'tr': {'x':720,'y':40}, // 绘图区域右上角点坐标,top-right
  6. 'bl': {'x':100,'y':320}, // 绘图区域左下角点坐标,bottom-left
  7. 'br': {'x':720,'y':320}, // 绘图区域右下角点坐标,bottom-right
  8. 'cc': {'x':410,'y':180} // 绘图区域中心店坐标
  9. }

views

类型:Array

返回该 chart 实例包含的所有视图 View 对象,亦可通过 chart.getViews() 方法获取。

geoms

类型:Array

返回该 chart 实例包含的所有几何标记 Geom 对象,亦可通过 chart.getAllGeoms() 方法获取。

scales

类型:Object

返回 chart 实例的所有 scale 度量对象。

options

类型:Object

返回生成 chart 实例相关的所有配置项,详见 配置项支持

方法

source

方法名:chart.source(data[, colDefs, namesArr])

说明:配置图表的数据以及相关的列定义信息。

参数

  • data: Array

数据源数据,标准的 JSON 数组。

  • colDefs: Object

【可选】,用于数据字段的列定义,如设置数据的类型,显示别名,时间类型的展示格式等,不同的数字类型的配置项不同,详情参考

  • namesArr: Array

作为附加字段,用于补全数据源包含的数据字段,常用于数据源含有不同数据字段的记录。

代码示例

  1. var data = [
  2. {type: 0, value: 1},
  3. {type: 1, value: 2},
  4. {type: 2, value: 3},
  5. {type: 2, value: 3, color: '#f80'},
  6. ];
  7. chart.source(data, {
  8. type: {
  9. type: 'cat', // 声明 type 字段为分类类型
  10. values: ['A', 'B', 'C'] // 重新显示的值
  11. alias: '类型' // 设置属性的别名
  12. }
  13. }, ['color']);

cols

方法名:chart.cols(cfg)

说明:为多个数据字段进行列定义。

注意:

  • 该方法是对于数据进行定义,会影响后面图形的绘制,所以必须先于图形语法语句(chart.<geomType>.position()…)进行声明;
  • 如数据字段 dim 在 chart.source()chart.cols() 中均有定义,那么 chart.cols() 中的配置会覆盖 chart.source() 中的配置。

参数

  • cfg: Object

用于数据字段的定义,如数据的类型,显示别名,时间类型的格式等,不同的数字类型的配置项不同,详情参考

代码

  1. var data = [
  2. {type: 0, value: 1},
  3. {type: 1, value: 2},
  4. {type: 2, value: 3},
  5. ];
  6. chart.cols({
  7. 'type': {
  8. type: 'cat', // 声明 type 字段为分类类型
  9. values: ['A', 'B', 'C'] // 重新显示的值
  10. alias: '类型' // 设置属性的别名
  11. },
  12. 'value': {
  13. type: 'cat'
  14. }
  15. });

col

方法名:chart.col(dim, cfg)

说明:为对应的数据字段进行列定义,当需要对多个字段进行列定义时,推荐使用 chart.source() 或者 chart.cols()

注意:

  • 该方法是对于数据进行定义,会影响后面图形的绘制,所以必须先于图形语法语句(chart.<geomType>.position()…)进行声明;
  • 如数据字段 dim 在 chart.source()chart.col() 中均有定义,那么 chart.col() 中的配置会覆盖 chart.source() 中的配置。

参数

  • dim: String

数据源中对应的字段名,表示只为该 dim 进行列定义。

  • cfg: Object

用于数据字段的定义,如数据的类型,显示别名,时间类型的格式等,不同的数字类型的配置项不同,详情参考

代码

  1. var data = [
  2. {type: 0, value: 1},
  3. {type: 1, value: 2},
  4. {type: 2, value: 3},
  5. ];
  6. chart.col('type', {
  7. type: 'cat', // 声明 type 字段为分类类型
  8. values: ['A', 'B', 'C'] // 重新显示的值
  9. alias: '类型' // 设置属性的别名
  10. });

axis

方法名:chart.axis(dim, cfg)

说明:配置图表坐标轴。

chart.axis(false)

不展示所有的坐标轴。

chart.axis(dim, cfg)

参数
  • dim: String

dim 对应数据源中的字段名,即指定设置该字段对应的坐标轴显示样式。

  • cfg: Object

设置坐标轴配置信息,如果值为 false,表示不显示该字段对应的坐标轴。可配置属性如下:

image

  1. chart.axis('dim', false); // 不显示该字段对应的坐标轴
  2. chart.axis('dim', {
  3. position: 'top', // 设置坐标轴的显示位置,可取值 top bottom left right
  4. formatter: function(dimValue) {
  5. return (dimValue / 1000).toFixed(0) + 'k';
  6. }, // 回调函数,用于格式化坐标轴上显示的文本信息
  7. line: {
  8. lineWidth: 1, // 设置线的宽度
  9. stroke: '#ccc' // 设置线的颜色
  10. }, // 设置坐标轴线的样式,如果值为 null,则不显示坐标轴线 图形属性
  11. labels: {
  12. label: {
  13. textAlign: 'center', // 文本对齐方向,可取值为: start middle end
  14. fill: '#404040', // 文本的颜色
  15. fontSize: '12', // 文本大小
  16. fontWeight: 'bold', // 文本粗细
  17. rotate: 30 * Math.PI / 180, // 文本旋转 30 度,需要将 30 度转化为弧度,2.3.0 及以上版本只支持弧度设置
  18. textBaseline: 'top' // 文本基准线,可取 top middle bottom,默认为middle
  19. }, // 设置坐标轴文本的显示样式,如果值为 null,则不显示坐标轴文本
  20. autoRotate: true // 是否需要自动旋转
  21. },
  22. title: {
  23. fontSize: '12',
  24. textAlign: 'center',
  25. fill: '#999',
  26. fontWeight: 'bold'
  27. }, // 坐标轴标题设置,如果值为 null,则不显示标题
  28. tickLine: {
  29. lineWidth: 1, // 刻度线宽
  30. stroke: '#ccc', // 刻度线的颜色
  31. value: 5, // 刻度线的长度
  32. }, // 坐标轴刻度线配置
  33. titleOffset: 45, // 设置标题 title 距离坐标轴线的距离
  34. labelOffset: 20, // 设置坐标轴文本 label 距离坐标轴线的距离
  35. grid: {
  36. type: 'polygon', // 用于极坐标下网格线样式的配置
  37. odd: {
  38. fill: '#ccc',
  39. opacity: 0.3,
  40. stroke: '#999'
  41. }, // 奇数项背景样式设置
  42. even: {
  43. fill: '#ccc',
  44. opacity: 0.3,
  45. stroke: '#999'
  46. }, // 偶数项背景样式设置
  47. line: {
  48. stroke: '#d9d9d9', // 网格线的颜色
  49. lineWidth: 1, // 网格线的宽度
  50. lineDash: [4, 4] // 网格线的虚线配置,第一个参数描述虚线的实部占多少像素,第二个参数描述虚线的虚部占多少像素
  51. } // 设置坐标轴网格线,如果 grid: null 则代表不绘制网格线
  52. }, // 坐标轴栅格线的配置信息,默认只有左边的坐标轴带有栅格线,null 为不显示。
  53. gridAlign: 'start'// 栅格的位置跟坐标轴刻度线(tickLine)的对齐方式,当前仅支持 start 和 middle
  54. });

legend

方法名:chart.legend(dim, cfg)

说明:设置图例样式。

chart.legend(false)

不显示所有的图例。

chart.legend(cfg)

为默认的图例进行配置,在图例章节我们提到过,shape, color, size 这三个图形属性如果判断接收的参数是数据源的字段时,会自动生成对应的图例。所以当 chart.legend() 第一个参数是一个 Object 对象时,表示默认为所有自动生成的图例设置样式。

image

参数
  • cfg: Object

分类类型和连续类型的配置有一定的区别,下面列出了这两种类型支持的可配置的属性:

注意:选中模式配置属性 selectedMode, 在 [email protected] 及以上 已改为 mode,2.3.0 以下版本请使用 selectedMode

  1. // 分类类型图例
  2. chart.legend({
  3. position: 'right', // 图例的显示位置,有 'top','left','right','bottom'四种位置,默认是'right'。
  4. leaveChecked: false, // 是否保留一项不能取消勾选,默认为 false,即不能取消勾选。
  5. mode: 'multiple' || 'single' || false, // 设置图例筛选模式,默认为 'multiple' 多选,'single' 表示单选,false 表示禁用筛选
  6. title: null, // 是否展示图例的标题,null 为不展示,默认 top bottom 两个位置的图例不展示标题。
  7. spacingX: 10, // 用于 position 为 top 或者 bottom 时调整子项之间的水平距离
  8. spacingY: 12, // 用于 position 为 left 或者 right 时调整子项之间的垂直距离
  9. unChecked: '#CCC', // 未选中时 marker 的颜色
  10. wordSpaceing: 2, // marker 和文本之间的距离
  11. dx: 5, // 整个图例的水平偏移距离
  12. dy: 10, // 整个图例的垂直偏移距离
  13. itemWrap: false, // 是否自动换行,默认为 false,true 为自动换行
  14. word: {
  15. fill: 'red',
  16. fontSize: 14
  17. }, // 图例各个子项文本的颜色
  18. back: {
  19. fill: 'red'
  20. }, // 图例外边框和背景的配置信息
  21. formatter: function(val) {
  22. return val + '%';
  23. }, // 格式化图例项的文本显示
  24. marker: 'circle', 'square', 'bowtie', 'diamond', 'hexagon', 'triangle', 'triangle-down', 'hollowCircle', 'hollowSquare', 'hollowBowtie', 'hollowDiamond', 'hollowHexagon', 'hollowTriangle', 'hollowTriangle-down', 'cross', 'tick', 'plus', 'hyphen', 'line' // 配置 marker 的显示形状
  25. });
  1. // 连续类型图例
  2. chart.legend({
  3. mode: false, // 关闭连续图例的筛选功能,默认为开启状态
  4. width: 30, // 连续图例宽度
  5. height: 80, // 连续图例高度度
  6. position: 'right', // 图例的显示位置,有 'top','left','right','bottom'四种位置,默认是'right'。
  7. title: null, // 图例的标题配置,null 为不展示,默认 top bottom 两个位置的图例不展示。
  8. word: {
  9. fill: 'red'
  10. }, // 文本属性
  11. back: {
  12. fill: 'red'
  13. } // 图例外边框和背景的配置信息,是一个矩形 图形属性
  14. });

chart.legend(dim, cfg)

参数
  • dim: String

可以传入对应图例的数据源的数据字段名。

  • cfg: Object

为对应字段的图例图例配置信息,属性同上述,这里不再说明。

coord

方法名:chart.coord(type[, cfg])

说明:设置图表坐标系,并可对坐标系进行各种操作。注意 chart.coord(type[, cfg]) 操作返回的不是 chart 对象,而是同 Coord 坐标系有关的一个辅助类,以便进行坐标系的各种变换。

参数

  • type: String

坐标系的类型,具体包括:

type说明示例
rect默认类型,直角坐标系,由 x, y 两个垂直的维度构成。Chart - 图5
polar极坐标系,由角度和半径 2 个维度构成。Chart - 图6
clock极坐标的一种,用于绘制时钟的坐标系。Chart - 图7
gauge极坐标的一种,仪表盘坐标系。Chart - 图8
theta一种半径固定的极坐标系,常用于饼图。Chart - 图9
map地理坐标系,支持不同类型的地理投影Chart - 图10
helix螺旋坐标系,常用于周期性数据Chart - 图11
  • cfg: Object

【可选】 坐标系的配置信息。

对于 type 为 polartheta 类型的极坐标系,其可配置的 cfg 属性如下:

  1. chart.coord('polar | theta', {
  2. radius: 0.5, // 设置半径,值为 0 至 1 的小数
  3. inner: 0.3 // 内部极坐标系的半径,[0 - 1]的小数
  4. startAngle: 弧度, // 起始角度
  5. endAngle: 弧度 // 结束角度
  6. });

对于 map 类型的坐标系,情况比较特殊,对于不同的投影支持的配置参数不同。目前,您可以直接复制下列代码即可使用 G2 提供的 map 坐标系。

  1. // 适用于中国地图的 albers 投影
  2. chart.coord('map', {
  3. projection: 'albers', // 指定投影方法
  4. basic: [110, 0, 25, 47], // 指定投影方法的基本参数,[λ0, φ0, φ1, φ2] 分别表示中央经度、坐标起始纬度、第一标准纬度、第二标准纬度
  5. max: [16.573, -13.613], // 指定投影后最大的坐标点
  6. min: [-27.187, -49.739] // 指定投影后最小的坐标点
  7. });
  8. // 适用于世界地图的 albers 投影
  9. chart.coord('map', {
  10. projection: 'albers', // 指定投影方法
  11. basic: [0, 0, 0, 60], // 指定投影方法的基本参数,[λ0, φ0, φ1, φ2] 分别表示中央经度、坐标起始纬度、第一标准纬度、第二标准纬度
  12. max: [161.89, 120.635], // 指定投影后最大的坐标点
  13. min: [-144.485, -27.666] // 指定投影后最小的坐标点
  14. });
  15. // 适用于世界地图的 mercator 投影
  16. chart.coord('map', {
  17. projection: 'mercator',
  18. max: [180, 165.65], // 指定投影后最大的坐标点
  19. min: [-180, -67.21] // 指定投影后最小的坐标点
  20. });
  21. // 使用与中国地图的 mercator 投影
  22. chart.coord('map', {
  23. projection: 'mercator',
  24. max: [134.77, 63.68],
  25. min: [73.60, 18.48]
  26. });

对于螺旋坐标系,其可配置的 cfg 属性如下:

  1. chart.coord('helix', {
  2. startAngle: Math.PI, // 螺旋线起点弧度
  3. endAngle: 7 * Math.PI // 螺线线终点弧度
  4. });

坐标系变换

可支持的变换操作:

  • rotate(angle): 坐标系旋转,angle 为旋转的角度,是一个度数值。

  • scale(sx, sy): 坐标系缩放,sx 代表 x 方向缩放比例,sy 代表 y 方向缩放比例。

  • reflect(): 坐标系转置,将 x 或者 y 的起始、结束值倒置

  • transpose(): 将坐标系 x 轴和 y 轴转置。

上述操作均可支持链式调用,如下:

  1. chart.coord().rotate(70).scale(1.5, 1.5).reflect('xy').transpose();

facet

方法名:chart.facet(dimArray, cfg)

说明:设置分面的切割维度和配置信息。

参数

  • dimArray: Array

用于切割分面的数据源字段,是一个数组 Array。

  • cfg: Object

分面的配置信息。不同类型的分面除了含有共同的配置项外,还对应各自的配置项。

image

  • 通用的配置项
  1. chart.facet([dims], {
  2. type: 'rect' | 'list' | 'circle' | 'tree' | 'mirror', // 设置分面的布局类型
  3. margin: 10, // 各个分面之间的距离,同 CSS 盒模型中的 margin
  4. facetTitle: { // 各个分面标题的样式配置
  5. titleOffset: 16, // 标题距离内容区的偏移
  6. colDimTitle: {
  7. title: {
  8. fontSize: 14,
  9. textAlign: 'center',
  10. fill: '#999'
  11. }
  12. },
  13. colTitle: {
  14. title: {
  15. fontSize: 12,
  16. textAlign: 'center',
  17. fill: '#999'
  18. }
  19. },
  20. rowTitle: {
  21. title: {
  22. fontSize: 12,
  23. textAlign: 'center',
  24. rotate: 90,
  25. fill: '#999'
  26. }
  27. },
  28. rowDimTitle: {
  29. title: {
  30. fontSize: 12,
  31. textAlign: 'center',
  32. rotate: 90,
  33. fill: '#999'
  34. }
  35. }
  36. }
  37. });

下面列出每一种分面类型各自的参数配置项:

  1. chart.facet([dims], {
  2. type: 'list',
  3. cols: 2 // 每行有只展示 2 个分面,超过 2 个则自动折行
  4. });
  1. chart.facet([dims], {
  2. type: 'circle'
  3. });
  1. chart.facet([dims], {
  2. type: 'tree',
  3. smooth: true, // 各个树节点的连接线是否是平滑的曲线
  4. line: {
  5. stroke: 'red', // 连接边的颜色
  6. lineWidth: 1 // 连接边的粗细
  7. } // 连接各个树节点的线的配置项
  8. });
  1. chart.facet([dims], {
  2. type: 'mirror',
  3. transpose: true // 设置镜像是否反转,默认为 false,不翻转, true 则翻转
  4. });

tooltip

方法名:chart.tooltip([enable,] cfg)

说明:设置显示的提示信息的内容

chart.tooltip(false)

表示禁用 tooltip。

chart.tooltip(true, cfg)

参数
  • enable: Boolean

当 enable 为 true 时,表示 tooltip 可用,主要用于关闭 tooltip 之后重新开启。默认为 true,可不设置。

  • cfg: Object

tooltip 配置信息,当对 G2 自动生成的 tooltip 展示信息不满意时,可以通过这个方法进行部分自定义,如下所示:

注:当然配置 tooltip 还有其他多种方法,可详见教程:tooltip 提示信息

image

  1. chart.tooltip(true, {
  2. title: null, // 用于控制是否显示 tooltip 框内的 title
  3. map: { // 用于指定 tooltip 内显示内容同原始数据字段的映射关系复制代码
  4. title: '数据字段名或者常量', // 为数据字段名时则显示该字段名对应的数值,常量则显示常量
  5. name: '数据字段名或者常量', // 为数据字段名时则显示该字段名对应的数值,常量则显示常量
  6. value: '数据字段名' // 为数据字段名时则显示该字段名对应的数值
  7. },
  8. offset: 15, // 偏移量,设置 tooltip 显示位置距离 x 轴方向上的偏移
  9. crosshairs: true, // 是否展示 tooltip 的辅助线,默认为 false,不展示
  10. crossLine: {
  11. stroke: '#666', // 辅助线的颜色
  12. lineWidth: 2, // 辅助线的宽度
  13. lineDash: [2, 3] // 设置虚线样式
  14. }, // crosshairs 为 true 时,为辅助线设置样式
  15. padding: [10, 10, 10, 10], // 提示框内边距
  16. });

crosshairs 参数支持三种展示形式:

配置说明
crosshairs: true启用辅助线,默认为竖直方向的辅助线。
crosshairs: {type: 'x'}启用水平方向的辅助线。
crosshairs: {type: 'cross'}启用十字辅助线,水平和数值方向均有。

当需要使用自定义的 html 模板生成 tooltip 时,需要对 tooltip 进行如下配置:

  1. chart.tooltip(true, {
  2. custom: true, // 表示使用自定义的模板显示 tooltip
  3. html: '<div class="ac-tooltip" style="position:absolute;visibility: hidden;"><h4 class="ac-title"></h4><table class="ac-list custom-table"></table></div>', // tooltip 的 html 外层模板
  4. itemTpl: '<tr><td>{index}</td><td style="color:{color}">{name}</td><td>{value}k</td></tr>', // 使用 html 时每一个显示项的模板,默认支持 index, color, name, value 这四个字段。
  5. offset: 50, // 偏移量,设置tooltip 显示位置距离 x 轴方向上的偏移
  6. customFollow: false // 设置 tooltip 是否跟随鼠标移动,默认为 true,跟随。
  7. });
自定义 html 模板示例
  1. var data = [
  2. {"month":0,"tem":7,"city":"tokyo"},
  3. {"month":1,"tem":6.9,"city":"tokyo"},
  4. {"month":2,"tem":9.5,"city":"tokyo"},
  5. {"month":3,"tem":14.5,"city":"tokyo"},
  6. {"month":4,"tem":18.2,"city":"tokyo"},
  7. {"month":5,"tem":21.5,"city":"tokyo"},
  8. {"month":6,"tem":25.2,"city":"tokyo"},
  9. {"month":7,"tem":26.5,"city":"tokyo"},
  10. {"month":8,"tem":23.3,"city":"tokyo"},
  11. {"month":9,"tem":18.3,"city":"tokyo"},
  12. {"month":10,"tem":13.9,"city":"tokyo"}
  13. ];
  14. var chart = new G2.Chart({
  15. id: 'c1',
  16. width: 800,
  17. height: 400
  18. });
  19. var defs = {'month':{
  20. type: 'cat',
  21. values: ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']
  22. }};
  23. chart.source(data,defs);
  24. chart.tooltip(true,{ // 第一个参数是控制是否显示tooltip,可以设置为false,不显示tooltip
  25. custom: true,
  26. html: '<div class="ac-tooltip" style="position:absolute;visibility: hidden;"><p class="ac-title"></p><table class="ac-list custom-table"></table></div>', // tooltip的外层模板
  27. itemTpl: '<tr><td>{index}</td><td style="color:{color}">{name}</td><td>{value}</td></tr>', // 支持的字段 index,color,name,value
  28. offset: 50
  29. });
  30. chart.line().position('month*tem');
  31. chart.render();

chart.tooltip(cfg)

默认显示 tooltip,cfg 配置信息同上。

guide

方法名:chart.guide().<guideType>()

说明:为图表添加静态的辅助标记,如辅助线、辅助图片、辅助文本等,具体介绍可详见guide 教程chart.guide() 方法同 chart.coord() 一样会返回一个 GuideAssist 对象,该对象支持以下类型的辅助标记元素的绘制:

chart.guide().line(from, to, cfg)

绘制辅助线。

参数
  • from: Array
  • to: Array

分别表示线的起点和终点,这两个参数均为数组 Array 格式: [x, y]:

  • x:是 x 轴坐标对应字段的值,是原始数据值,不是画布坐标。
  • y:是 y 轴坐标对应字段的值,是原始数据值,不是画布坐标。

当然,如果 x、y 值为分类类型的话,则支持传入索引值。

另外还提供了两个关键字: min max 用于表示对应字段的最大值和最小值,主要用户快速定位坐标轴的起点和终点。

  • cfg: Object

用于辅助线的图形属性配置。

  1. // 添加辅助线
  2. chart.guide().line([startXValue, startYValue], [endXValue, endYValue], {
  3. stroke: '#999', // 线的颜色
  4. lineDash: [0, 2, 2], // 虚线的设置
  5. lineWidth: 3 // 线的宽度
  6. });

chart.guide().image(from[, to], cfg)

绘制辅助图片。

参数
  • from: Array
  • to: Array

chart.guide.line(),但是这里的 to 参数可选。

  • cfg: Object
  1. // 添加辅助图片
  2. chart.guide().image([startXValue, startYValue], [endXValue, endYValue], {
  3. src: 'http://gtms02.alicdn.com/VXXXXaZX.png', // 图片路径
  4. width: 160, // 宽度,可以不设置,如果设置了 [endXValue, startYValue],此属性无效
  5. height: 230 // 高度,可以不设置,如果设置了 [endXValue, endYValue],此属性无效
  6. });

chart.guide().text(from, text[, cfg])

绘制辅助文本。

参数
  • from: Array

chart.guide.line()

  • text: String

辅助文本显示内容。

  • cfg: Object

辅助文本的显示样式配置,可选,不配置使用默认 G2 提供的配置。

  1. // 添加辅助文本
  2. chart.guide().text([startXValue, startYValue], '我是辅助文本呀!', {
  3. fill: '#666', // 文本颜色
  4. fontSize: '12', // 文本大小
  5. fontWeight: 'bold' // 文本粗细
  6. });

chart.guide().rect(from, to, [cfg])

绘制辅助框。

参数
  • from: Array
  • to: Array

chart.guide.line()

  • cfg: Object

辅助框的显示样式配置,可选,不配置使用默认 G2 提供的配置。

  1. // 添加辅助框
  2. chart.guide().rect([startXValue, startYValue], [endXValue, endYValue], {
  3. lineWidth: 0, // 辅助框的边框宽度
  4. fill: '#f80', // 辅助框填充的颜色
  5. fillOpacity: 0.1, // 辅助框的背景透明度
  6. stroke: '#ccc' // 辅助框的边框颜色设置
  7. });

chart.guide().tag(from, to, text, [cfg])

绘制辅助标记。

参数
  • from: Array
  • to: Array

chart.guide.line()

  • text: String

辅助标记文本内容。

  • cfg: Object

辅助标记的显示样式配置,可选,不配置使用默认 G2 提供的配置。

  1. // 添加辅助标记
  2. chart.guide().tag([startXValue, startYValue], [endXValue, endYValue], '文本', {
  3. line: {
  4. stroke: '#999',
  5. lineDash: [0, 2, 2]
  6. }, // 辅助标记中连接线的样式配置
  7. text: {
  8. fill: '#666',
  9. fontSize: '12',
  10. textAlign: 'center'
  11. }, // 辅助标记中文本的样式配置
  12. rect: {
  13. lineWidth: 0,
  14. fill: '#999',
  15. fillOpacity: 0.1
  16. } // 辅助标记中背景框的样式配置
  17. });

chart.guide().arc(from, to, [cfg])

绘制辅助弧线。

参数
  • from: Array
  • to: Array

chart.guide.line()

  • cfg: Object

辅助弧线的显示样式配置,可选,不配置使用默认 G2 提供的配置。

  1. // 添加辅助标记
  2. chart.guide().arc([startXValue, startYValue], [endXValue, endYValue], {
  3. stroke: '#999', // 线的颜色
  4. lineDash: [0, 2, 2], // 虚线的设置
  5. lineWidth: 3 // 线的宽度
  6. });

chart.guide().html(from, html[, cfg])

绘制辅助html。

参数
  • from: Array

文本位置,格式: [x, y]

  • html: String

辅助 html 的自定义内容。

  • cfg: Object

html 的配置信息。包含 align 和 ofsset 两个属性。

  • 对齐 align 支持 tr、tc、tl、br、bc、bl、lc、rc、cc 9 点对齐;
  • 偏移坐标 offset,类型:数组 Array, 格式: [x, y],可选,不配置使用默认 G2 提供的配置。
  1. // 添加辅助html
  2. // 坐标点
  3. var point = [3.5,12000];
  4. //html字符串
  5. var tooltipHtml = "<span'>异常值</span>";
  6. chart.guide().html(point, tooltipHtml, {
  7. align:'br',
  8. offset:[10, 0]
  9. });

filter

方法名:chart.filter(dim, remained)

说明:过滤数据,如果存在对应的图例,则过滤掉的字段置灰。

参数

  • dim: String

指定过滤数据源的哪一个字段。

  • remained: Array

指定保留的字段值。

  • 如果是分类类型,则传入需哟啊保留的值即可;
  1. chart.filter('cut', ['Ideal', 'Good']); // 仅显示切割工艺Ideal,Good的钻石
  • 如果是连续类型,则传入一个范围区间:
  1. chart.filter('value', [20, 130]);

setMode

用于开启和关闭图表交互模式,目前仅支持框选模式。使用如下:

  1. chart.setMode('select'); // 开启框选模式
  2. chart.setMode(false); // 关闭框选模式

select

当用于开启框选模式时,通过调用 chart.select(type) 来选择框选的模式。

目前我们提供了如下三种框选交互形式:

  1. chart.select('rangeX'); // 使用 X 轴范围的框选
  2. chart.select('rangeY'); // 使用 Y 轴范围的框选
  3. chart.select('rangeXY'); // 使用 X 和 Y 轴的框选

createView

方法名:chart.createView(cfg)

说明:创建视图,返回一个视图对象 View,详见 View

参数

  • cfg: Object

初始化视图对象时的配置项,如下:

  1. {
  2. index: 0 // 索引值,用于标定 view
  3. start: { // 视图绘图区域的起始点
  4. x: 0,
  5. y: 0
  6. },
  7. end: { // 视图绘图区域的结束点
  8. x: 1,
  9. y: 1
  10. },
  11. data: [], // 视图源数据
  12. }

removeView

方法名: chart.removeView(view)

说明:删除指定的视图。

参数

  • view: View

需要删除的视图对象。

getView

方法名:chart.getView(index)

说明:根据索引值获得视图对象。

参数

  • index: String

需要获取的视图的 id 标识。

animate

方法名:chart.animate(enable)

说明:是否执行图表动画。

参数

  • enable: Boolean

默认都是执行动画的,除了通过创建 chart 时设置 animate 属性,也可以通过调用该方法开启和关闭动画。

  1. chart.animate(false); // 关闭动画

render

方法名:chart.render()

说明:最后一步,绘制图表,当调用这个方法后,图表即可被渲染绘制出来。

clear

方法名:chart.clear()

说明:清空图表上所有的绘制内容,但是不销毁图表。

destroy

方法名:chart.destroy()

说明:销毁图表,删除生成的图表对象。

repaint

方法名:chart.repaint()

说明:图表重绘。

changeData

方法名:chart.changeData(data)

说明:用于修改图表的数据源,注意这里 data 的数据结构需要同原始的数据结构保持一致。

参数

  • data: Array

新的数据源,一样是 JSON 数组,但是其数据结构需要同原始的数据结构保持一致

changeSize

方法名:chart.changeSize(width, height)

说明:更改图表的大小。

参数

  • width: Number

图表宽度

  • height: Number

图表高度

forceFit

方法名:chart.forceFit()

说明:当父元素宽度变化时,通过调用此方法达到宽度自适应。当然也可以在创建 chart 实例时设置 forceFit 属性。

getAllGeoms

方法名:chart.getAllGeoms()

说明:获取图表中所有的几何标记对象,返回的结果是一个数组: [geom, geom, …]。

getViews

方法名:chart.getViews()

说明:获取图表中所有的视图对象,返回的结果是一个数组: [view, view, …]。

getView

方法名:chart.getView(id)

说明:根据传入的 id 属性获取图表中对应的视图对象。

参数

  • id: String

view 的 id 属性。

getScale

方法名:chart.getScale(dim)

说明:dim 为数据源的某个字段名,该方法用于获取该 dim 对应的度量scale对象。

参数

  • dim: String

对应数据源中的数据字段。

getPosition

方法名: chart.getPosition({xDim: value, yDim: value})

说明:获取原始数据对应在画布空间上的坐标,返回的结果为一个对象,格式如下:

  1. {
  2. x: 12, // 画布上的横坐标
  3. y: 34 // 画布上的纵坐标
  4. }

参数

参数是一个 Object 类型,结构如下:

  1. {
  2. 'x 轴对应的字段名': '该字段名对应的数值',
  3. 'y 轴对应的字段名': '该字段名对应的数值'
  4. }

代码实例

  1. var data = {
  2. cut: 'a', price: 1,
  3. cut: 'b', price: 2,
  4. cut: 'c', price: 3,
  5. cut: 'd', price: 4
  6. };
  7. chart.getPosition({
  8. cut: 'b',
  9. price: 2
  10. });

getSnapRecords

方法名:chart.getSnapRecords(point)

说明:根据传入的坐标点 point,获取逼近的该坐标点的所有 shape 的绘制数据,point 的格式如下,表示的是画布坐标:

  1. var point= {
  2. x: 100,
  3. y: 200
  4. }

返回结果为一个数组,该 shape 对应的原始数据可以通过 _origin 字段获取。

Chart - 图14

getTooltipItems

方法名:chart.getTooltipItems(point)

说明:根据传入的坐标点 point,获取当前坐标点上的 tooltip 信息,point 的格式如下,表示的是画布坐标:

  1. var point= {
  2. x: 100,
  3. y: 200
  4. }

showTooltip

方法名:chart.showTooltip(point)

说明:根据传入的坐标点显示对应的 tooltip 信息,这个方法通常同 chart.getPosition({xDim: value, yDim: value}) 配合使用。

参数

  • point: Object

point 是一个对象,代表画布上的坐标点,参数格式如下:

  1. {
  2. x: 12, // 画布上的横坐标
  3. y: 34 // 画布上的纵坐标
  4. }

downloadImage

方法名:chart.downloadImage()说明:提供图表下载功能,同时返回 image 数据。

事件

chart 对象提供了各种事件,方便用户扩展交互。基本的事件用法如下:

  1. chart.on('eventType', fn); // 添加事件
  2. chart.off('eventType', fn); // 移除事件

chart.off('eventType', fn) 其中如果 fn 不指定,表示删除所有 eventType 事件,如果 eventType 和 fn 都不指定,则表示删除所有事件。

下面列出了 chart 支持的所有事件类型。

plotmove

鼠标在绘图区域移动时触发,在图表的绘图区域外不触发。

  • ev 表示事件触发时返回的对象,包含以下属性
    • x:当前鼠标所在的画布上的 x 坐标;
    • y:当前鼠标所在的画布上的 y 坐标;
    • target:canvas 对象;
    • toElement:当前 dom 元素;
    • shape: 当前鼠标所在的 shape 对象;
    • views: Array,当前鼠标所在的视图。
  1. chart.on('plotmove', function(ev) {
  2. var point = {
  3. x: ev.x,
  4. y: ev.y
  5. };
  6. var items = chart.getTooltipItems(point);
  7. console.log(items);
  8. });

plotenter

当鼠标移动进入绘图区域时触发。

  • ev 表示事件触发时返回的对象,包含以下属性
    • x:当前鼠标所在的画布上的 x 坐标;
    • y:当前鼠标所在的画布上的 y 坐标;
    • target:canvas 对象;
    • toElement:当前 dom 元素;
    • views: Array,当前鼠标所在的视图。。
  1. chart.on('plotenter', function(ev) {
  2. var point = {
  3. x: ev.x,
  4. y: ev.y
  5. };
  6. // do something
  7. });

plotleave

当鼠标移出绘图区域时触发。

  • ev 表示事件触发时返回的对象,包含以下属性
    • x:当前鼠标所在的画布上的 x 坐标;
    • y:当前鼠标所在的画布上的 y 坐标;
    • target:canvas 对象;
    • toElement:当前 dom 元素;
    • views: Array,当前鼠标所在的视图。
  1. chart.on('plotleave', function(ev) {
  2. var point = {
  3. x: ev.x,
  4. y: ev.y
  5. };
  6. // do something
  7. });

plotclick

鼠标点击绘图区域时触发的事件。

  • ev: 事件触发时返回的对象,包含以下属性
    • x:当前鼠标所在的画布上的 x 坐标;
    • y:当前鼠标所在的画布上的 y 坐标;
    • target:canvas 对象;
    • toElement:当前 dom 元素;
    • views: Array,当前鼠标所在的视图;
    • shape:点击的图表 shape,可能为空;
    • data:选中图形代表的数据,可能为空;
    • geom:选中的图形,可能为空。

plotdblclick

绘图区域内的鼠标双击事件。

  • ev: 事件触发时返回的对象,包含以下属性
    • x:当前鼠标所在的画布上的 x 坐标;
    • y:当前鼠标所在的画布上的 y 坐标;
    • target:canvas 对象;
    • toElement:当前 dom 元素;
    • views: Array,当前鼠标所在的视图;
    • shape:点击的图表 shape,可能为空;
    • data:选中图形代表的数据,可能为空;
    • geom:选中的图形,可能为空。

itemselected

图表元素被选中时触发。

  • ev: 事件触发时返回的对象,包含以下属性
    • shape:选中的图形;
    • data:选中图形中的数据;
    • geom:所选中的图表图层。

itemunselected

图表元素取消选中时触发。

  • ev: 事件触发时返回的对象,包含以下属性
    • shape:取消选中的图形;
    • data:取消选中图形代表的数据;
    • geom:所选中的图表图层。

itemselectedchange

图表元素选中发生改变时触发。

  • ev: 事件触发时返回的对象,包含以下属性
    • shape:选中的图形;
    • data:选中图形代表的数据;
    • preShape:之前选中的图形;
    • preData:选中图形代表的数据;
    • geom:所选中的图表图层。

tooltipchange

tooltip 信息更新改变的时候触发。使用详见教程 tooltip

  • ev:事件触发时返回的对象,包含以下属性:
    • tooltip: 当前生成的 tooltip 对象;
    • x: 画布上的 x 坐标;
    • y: 画布上的 y 坐标;
    • items: 当前 tooltip 中的数据项。

tooltipshow

tooltip 显示时触发。

  • ev:事件触发时返回的对象,包含以下属性:
    • tooltip: 当前生成的 tooltip 对象;
    • x: 画布上的 x 坐标;
    • y: 画布上的 y 坐标。

tooltiphide

tooltip 隐藏或者消失时触发。

  • ev:事件触发时返回的对象,包含以下属性:
    • tooltip: 当前生成的 tooltip 对象。

rangeselectstart

框选事件开始时触发。

rangeselectend

框选事件结束时触发。

  • ev:事件触发时返回的对象,包含以下属性:
    • x: 结束点 x 的坐标;
    • y: 结束点 y 的坐标;
    • selected: 被选择区域对应的维度即值范围,格式如下:
  1. {
  2. dimX: [min, max], // 当 dimX 值对应为连续数据时,返回值区间
  3. dimY: [yValue1, yValue2, ... , yValueN] // 当 dimY 值对应为分类数据时,返回值
  4. }
  • view: 鼠标当前所在的视图,
  • rangePlot: 选择框。