下面的文档介绍中提到的 legend 等同于图例。

配置方式

关闭图例

关闭所有图例

  1. config.legend = false;
  2. // or
  3. config.legend = { visible: false };

关闭指定 Field 的图例

  1. config.legend = ['y', false];

开启图例

为默认 field 指定图例

  1. config.legend = {};

为特定列设置图例

  1. config.legend = [field, cfg];

属性列表

G2

position: String

设置图例的显示位置,可设置的值为 12 个

left-top left-center left-bottom(left)
right-top right-center right-bottom(right)
top-left top-center(top) top-right
bottom-left bottom-center(bottom) bottom-right

也可使用bottom,top,left,right设置位置,此时对应的值分别为bottom-center,top-center,left-bot|tom,right-bottom。默认为 bottom-center

layout: String

用于设置各个图例项的排列方式,可设置值包括:verticalhorizontal,分别表示垂直和水平排布。

title: Object|null

图例标题的显示样式设置,如果值为 null,表示不展示图例标题,默认不展示。

  1. title: {
  2. textAlign: 'center', // 文本对齐方向,可取值为: start middle end
  3. fill: '#404040', // 文本的颜色
  4. fontSize: '12', // 文本大小
  5. fontWeight: 'bold', // 文本粗细
  6. rotate: 30, // 文本旋转角度,以角度为单位,仅当 autoRotate 为 false 时生效
  7. textBaseline: 'top' // 文本基准线,可取 top middle bottom,默认为middle
  8. }

background: Object

针对分类类型的图例,用于设置图例的背景样式。

  1. background: {
  2. fill: '#000',
  3. fillOpacity: 0.3
  4. }

itemFormatter: Function

回调函数,用于格式化图例每项的文本显示。

  1. itemFormatter(val) {
  2. return val; // val 为每个图例项的文本值
  3. }

marker: String|Function

用于设置图例的 marker 样式,默认按照 geom 的类型显示。

  • 当为 string 类型时,即表示使用 G2 默认提供的类型,支持的类型如下。其中只有一部分支持 HTML 版本的分类图例:
type 样式 是否支持 HTML
‘circle’ config-图例 - 图1
‘square’ config-图例 - 图2
‘bowtie’ config-图例 - 图3
‘diamond’ config-图例 - 图4
‘hexagon’ config-图例 - 图5
‘triangle’ config-图例 - 图6
‘triangle-down’ config-图例 - 图7
‘cross’ config-图例 - 图8
‘tick’ config-图例 - 图9
‘plus’ config-图例 - 图10
‘hyphen’ config-图例 - 图11
‘line’ config-图例 - 图12
hollowCircle config-图例 - 图13
‘hollowSquare’ config-图例 - 图14
‘hollowBowtie’ config-图例 - 图15
‘hollowDiamond’ config-图例 - 图16
‘hollowHexagon’ config-图例 - 图17
‘hollowTriangle’ config-图例 - 图18
‘hollowTriangle-down’ config-图例 - 图19
  • 非 HTML 版本的分类图例的 marker 也支持自定义 shape,使用方式如下,
  1. /**
  2. * 自定义 marker 形状
  3. * @param {number} x 该 marker 的横轴坐标
  4. * @param {number} y 该 marker 的纵轴坐标
  5. * @param {number} r 该 marker 的半径大小
  6. * @return {null}
  7. */
  8. marker(x, y, r) {}

以下代码绘制了如图所示的 marker :config-图例 - 图20

  1. marker(x, y, r) {
  2. return [
  3. [ 'M', x - r, y ],
  4. [ 'L', x + r, y ]
  5. ];
  6. }

textStyle: Object

用于设置图例项的文本样式。

  1. textStyle: {
  2. textAlign: 'center', // 文本对齐方向,可取值为: start middle end
  3. fill: '#404040', // 文本的颜色
  4. fontSize: '12', // 文本大小
  5. fontWeight: 'bold', // 文本粗细
  6. rotate: 30, // 文本旋转角度,以角度为单位,仅当 autoRotate 为 false 时生效
  7. textBaseline: 'top' // 文本基准线,可取 top middle bottom,默认为middle
  8. }

clickable: Boolean

针对分类类型的图例,设置图例项是否允许点击,默认为 true,即允许点击。

selectedMode: String

针对分类类型图例,当 clickable 为 true 时该配置项生效,用于设置图例的选中交互模式,可配置的属性:

  • selectedMode: 'single':表示开启单选模式;
  • selectedMode: 'multiple':表示开启多选模式,默认为 'multiple'
  1. /**
  2. * 自定义图例项鼠标 hover 事件,hoverable 为 false 不生效
  3. * @param {object} ev 事件对象
  4. * @return {null}
  5. */
  6. onHover: ev => {};

onClick: Function

针对分类类型的图例,用于自定义鼠标点击图例项的交互,当 clickable 为 false 不生效。

  1. /**
  2. * 自定义图例项点击事件, clickable 为 false 不生效
  3. * @param {object} ev 事件对象
  4. * @return {null}
  5. */
  6. onClick: ev => {};

useHtml: Boolean

针对分类类型图例,用于开启是否使用 HTML 渲染图例,默认为 false,true 表示使用 HTML 渲染图例。这种情况下不要使用 ‘legend-item:click’ 建议使用 onClick

  1. chart.legend({
  2. useHtml: true,
  3. onClick: e => {
  4. console.log('e', e);
  5. },
  6. });

flipPage: Boolean

针对 HTML 版本的分类类型图例,即 useHtml 为 true 时。指定是否使用翻页的方式来交互超出容器的图例项。默认为 false ,即不使用翻页方式,而使用滚轮滚动的交互方式。

container: String

useHtml 为 true 时生效,用于指定生成图例的 dom 容器,那么该值必须为 dom 容器的 id 值为分类类型的话,则支持传入索引值。

containerTpl: String

useHtml 为 true 时生效,用于指定图例容器的模板,默认值如下:

  1. containerTpl: '<div class="g2-legend" style="position:absolute;top:20px;right:60px;width:auto;">' +
  2. '<h4 class="g2-legend-title"></h4>' +
  3. '<ul class="g2-legend-list" style="list-style-type:none;margin:0;padding:0;"></ul>' +
  4. '</div>';

如默认结构不满足需求,可以自定义该模板,但是自定义模板时必须包含各个 dom 节点的 class,样式可以自定义。

itemTpl: String

useHtml 为 true 时生效,用于指定生成图例的图例项 HTML 模板,默认值如下:

  1. itemTpl: string
    useHtml 为 true 时生效。HTML 版本的分类图例的图例项 HTML 模版。默认为:
  1. itemTpl: '<li class="g2-legend-list-item item-{index} {checked}" data-color="{originColor}" data-value="{originValue}">' +
  2. '<i class="g2-legend-marker" style="background-color:{color};"></i>' +
  3. '<span class="g2-legend-text">{value}</span></li>';

!注意:自定义模板时必须包含各个 dom 节点的 class,样式可以自定义。

slidable: Boolean

针对连续图例,用于设置连续图例是否允许滑动,默认为 true,即开启滑动操作。

width: Number

针对连续图例,用于设置图例的宽度。

height: Number

针对连续图例,用于设置图例的高度。

hoverable: Boolean

针对分类图例,设置是否开启鼠标 hover 至图例的交互效果,默认为 true,即开启动画。

onHover: Function

用于自定义鼠标 hover 图例项的交互,当 hoverable 为 false 不生效。

reactive: Boolean

设置是否开启鼠标 hover 图表元素时,图例对应项的高亮效果。默认为 false,即不开启动画。

isSegment: Boolean

针对连续的颜色图例,设置图例样式是否为分块颜色模式,默认为 false,即非分块颜色模式,为渐变颜色模式。

sizeType: String

针对连续的大小图例,设置图例是否是针对节点大小映射的样式。可选 ‘circle’ | ‘normal’ | null, 默认为 null,即针对除节点以外的其他元素的大小映射。
当 sizeType 为 ‘circle’ 时的样式:config-图例 - 图21

当 sizeType 为 ‘normal’ 或 null 时的样式:config-图例 - 图22

custom: Boolean

默认为 false,当 custom 为 true,表示不使用默认生成的图例,允许用户自定义非 HTML 版本的分类类型图例,包括具体的图例项以及 click、hover 交互。

自定义图例时需要用户自己声明具体的图例项 items (该属性是一个对象数组,数组中每一项为一个对象类型,结构为: { value: '', marker: { fill: 'red' } }以及图例项的 hover 和 click 事件。

具体使用如下:

  1. // 自定义图例
  2. config.legend = {
  3. custom: true,
  4. items: [
  5. {
  6. value: 'waiting', // 图例项的文本内容
  7. marker: {
  8. symbol: 'circle', // 该图例项 marker 的形状,参见 marker 参数的说明
  9. fill: '#3182bd', // 该图例项 marker 的填充颜色
  10. },
  11. },
  12. {
  13. value: 'call',
  14. marker: {
  15. symbol: 'square', // 该图例项 marker 的形状,参见 marker 参数的说明
  16. fill: '#99d8c9', // 该图例项 marker 的填充颜色
  17. },
  18. },
  19. {
  20. value: 'people',
  21. fill: '#fdae6b',
  22. marker: {
  23. symbol: 'line', // 该图例项 marker 的形状,参见 marker 参数的说明
  24. stroke: '#fdae6b', // 该图例项 marker 的填充颜色
  25. radius: 6,
  26. },
  27. },
  28. ],
  29. onHover: ev => {}, // 自定义 hover 事件
  30. onClick: ev => {}, // 自定义 click 事件
  31. }