图例简介

图例(legend)是图表的辅助元素,使用颜色、大小、形状区分不同的数据类型,用于图表中数据的筛选。G2 会根据图形属性和数据的类型自动生成不同的图例。

图例和图形属性

我们在前面的章节中学习过图形属性,图形使用的属性会影响图例的生成:

  • shape, color, size 这三个图形属性如果判断接收的参数是数据源的字段时,会自动生成不同的图例;
  • shape 属性,会根据不同的 shape 类型生成图例;
  • color 属性, 会赋予不同的图例项不同的颜色来区分图形;
  • size 属性, 在图例上显示图形的大小。

图例语法

chart.legend({ 
  position: 'bottom',// 位置
  spacingX: 20 // 图例之间水平的间距
});

chart.legend('cut', false);// 不显示cut字段对应的图例

chart.legend('price', {
  title: null // 不展示图例 title
});

chart.legend(false); //所有的图例都不显示

图例配置项

chart.legend(cfg) 或者 chart.legend(dim, cfg)。当第一个参数不传入 dim(图例对应的字段名)时,默认对所有图例生效。具体参数配置请参考 legend API

cfg 配置属性 说明
position 图例的显示位置,有 'top','left','right','bottom'四种位置,默认是'right'。
itemWrap 图例是否自动换行,默认为 false,不换行,设置为 true 表示自动换行。
leaveChecked 是否保留一项不能取消勾选,默认为 false,即不能取消勾选。
back 图例外边框和背景的配置信息,是一个矩形。
spacingX 子项之间的间距,水平方向。
spacingY 子项之间的间距,垂直方向。
title 是否展示图例的标题,null 为不展示,默认 top bottom 两个位置的图例不展示。

chart.filter() 和图例

chart.filter('dim', arr)

可以过滤指定字段的数据,其中 arr 是一个数组,代表该 dim 字段你要保留的数据值。如果存在对应字段的图例,那么被过滤掉的类型会被取消选中,如下图表所示:

var data = [
  {"month":0,"tem":7,"city":"tokyo"},
  {"month":1,"tem":6.9,"city":"tokyo"},
  {"month":2,"tem":9.5,"city":"tokyo"},
  {"month":3,"tem":14.5,"city":"tokyo"},
  {"month":4,"tem":18.2,"city":"tokyo"},
  {"month":5,"tem":21.5,"city":"tokyo"},
  {"month":6,"tem":25.2,"city":"tokyo"},
  {"month":7,"tem":26.5,"city":"tokyo"},
  {"month":8,"tem":23.3,"city":"tokyo"},
  {"month":9,"tem":18.3,"city":"tokyo"},
  {"month":10,"tem":13.9,"city":"tokyo"},
  {"month":11,"tem":9.6,"city":"tokyo"},
  {"month":0,"tem":-0.2,"city":"newYork"},
  {"month":1,"tem":0.8,"city":"newYork"},
  {"month":2,"tem":5.7,"city":"newYork"},
  {"month":3,"tem":11.3,"city":"newYork"},
  {"month":4,"tem":17,"city":"newYork"},
  {"month":5,"tem":22,"city":"newYork"},
  {"month":6,"tem":24.8,"city":"newYork"},
  {"month":7,"tem":24.1,"city":"newYork"},
  {"month":8,"tem":20.1,"city":"newYork"},
  {"month":9,"tem":14.1,"city":"newYork"},
  {"month":10,"tem":8.6,"city":"newYork"},
  {"month":11,"tem":2.5,"city":"newYork"},
  {"month":0,"tem":-0.9,"city":"berlin"},
  {"month":1,"tem":0.6,"city":"berlin"},
  {"month":2,"tem":3.5,"city":"berlin"},
  {"month":3,"tem":8.4,"city":"berlin"},
  {"month":4,"tem":13.5,"city":"berlin"},
  {"month":5,"tem":17,"city":"berlin"},
  {"month":6,"tem":18.6,"city":"berlin"},
  {"month":7,"tem":17.9,"city":"berlin"},
  {"month":8,"tem":14.3,"city":"berlin"},
  {"month":9,"tem":9,"city":"berlin"},
  {"month":10,"tem":3.9,"city":"berlin"},
  {"month":11,"tem":1,"city":"berlin"}
];

var chart = new G2.Chart({
  id: 'c1',
  width: 800,
  height: 350
});

var defs = {'month':{
  type: 'cat',
  values: [
    '一月','二月','三月','四月','五月','六月',
    '七月','八月','九月','十月','十一月','十二月']
}};

chart.source(data,defs);

chart.filter('city', ['berlin']); // 只展示 berlin 的数据
chart.line().position('month*tem').color('city');
chart.render();