标题(Title)

概述

G2 中标题(Title) 用于指定图表的标题内容,可以用于一句话展示图表的概要信息。图表的标题是比较常用的组件,分成为主标题和副标题两部分组成,均使用一个文本来展示,可以通过调整文本的样式来定制图表标题的样式。

使用方式

第一种,传入 boolean 设置是否显示图表标题,图表标题默认为隐藏状态。

({
  type: 'interval',
  title: false; // 隐藏图表标题
})

第二种,传入 titleOption 对图标表进行整体配置。

({
  type: 'interval',
  title: {
    title: 'hello', // 主标题的文本新秀丽
    subtitle: 'world', // 副标题的文本新秀丽
  },
});

标题也可以在 View 层级配置:

({
  type: 'view',
  title: {
    title: 'hello',
    subtitle: 'world',
  },
});

开始使用

import { Chart } from '@antv/g2';

const chart = new Chart({
  container: 'container',
});

chart.options({
  type: 'interval',
  marginTop: 40,
  data: {
    type: 'fetch',
    value:
      'https://gw.alipayobjects.com/os/bmw-prod/fb9db6b7-23a5-4c23-bbef-c54a55fee580.csv',
  },
  encode: {
    x: 'letter',
    y: 'frequency',
  },
  title: {
    align: 'center', // 图表标题的对齐方式
    size: 28, // 图表标题的高度,默认为 36
    spacing: 4, // 主标题和副标题之间的间距

    // 标题
    title: "我是一个标题 I'am a title", // 图表标题的文本
    titleFontSize: 28, // 图表主标题的字体大小
    titleFontFamily: 'sans-serif', // 图表主标题的字体
    titleFontWeight: 600, // 图表主标题的字体粗细
    titleFill: '#fff', // 图表主标题的文字颜色
    titleFillOpacity: 1, // 图表主标题的文字透明度
    titleStroke: '#000', // 图表主标题的文字描边颜色
    titleLineWidth: 2, // 图表主标题的文字描边线宽
    titleStrokeOpacity: 1, // 图表主标题的文字描边透明度

    // 副标题
    subtitle: "我是一个副标题 I'am a subtitle", // 图表副标题的文本
    subtitleFontSize: 16, // 图表副标题的字体大小
    subtitleFontFamily: 'Arial', // 图表副标题的字体
    subtitleFontWeight: 300, // 图表副标题的字体粗细
    subtitleFill: '#2989FF', // 图表副标题的文字颜色
    subtitleFillOpacity: 1, // 图表副标题的文字透明度
    subtitleStroke: '#000', // 图表副标题的文字描边颜色
    subtitleLineWidth: 1, // 图表副标题的文字描边线宽
    subtitleStrokeOpacity: 0.5, // 图表副标题的文字描边透明度
  },
});

chart.render();

标题 title 的设置,最简单的设置方式,就是直接指定一个字符串作为标题,这个时候使用默认的样式和位置。当然也可以使用完整的配置项去做一些灵活的自定义。

配置项

属性 描述 类型 默认值
size 图表标题的高度 number 36
align 图表标题的对齐方式 left | center | right left
spacing 图表主标题、副标题之间的上下间距 number 2
title 图表标题的配置项 title 详见 title
subtitle 图表副标题的配置项 subtitle 详见 subtitle

size

<description> number optional </description>

用于配置图表标题的空间高度大小,默认为 36px,如果配置过小,可能导致标题和图表图形之间重叠。

align

<description> string optional </description>

用于配置图表标题的的左右对齐方式,默认为 left,可以选择使用 leftcenterright,分别代表着居左对齐、居中对齐、居右对齐。

尝试一下:

import * as G2 from '@antv/g2';

const { Chart } = G2;
const chart = new Chart({
  container: 'container',
  width: 480,
  height: 160,
});
const container = chart.getContainer();

const alignList = ['center', 'right', 'left'];
const alignMap = alignList.map((p) => {
  return {
    label: p,
    value: p,
  };
});

const data = [
  264, 417, 438, 887, 309, 397, 550, 575, 563, 430, 525, 592, 492, 467, 513,
  546, 983, 340, 539, 243, 226, 192,
];

chart.options({
  data,
  type: 'interval',
  encode: {
    x: (_, idx) => idx,
    y: (d) => d,
  },
  title: {
    align: 'center',
    title: 'This is a chart title.',
    subtitle: 'Displayed are sampled values.',
  },
  axis: false,
});
const handleSetAlign = (align) => {
  chart.options({ type: 'view', title: { align } });
  chart.render(); // 重新渲染图表
};

const selectorContainer = document.createElement('div');
selectorContainer.textContent = '选择标题对齐方式 ';
const selector = document.createElement('select');
selector.innerHTML = alignMap.map(
  (align, index) =>
    `<option value="${align.value}" ${index === 0 ? 'selected' : ''}>${
      align.label
    }</option>`,
);
selector.onchange = (e) => {
  handleSetAlign(e.target.value);
};
selectorContainer.appendChild(selector);
container.insertBefore(selectorContainer, container.childNodes[0]);
chart.render();

spacing

<description> number optional </description>

用于配置图表主标题和副标题之间的间距,默认为 2px,合适的间距,可以让图表看起来整体更协调。

title

图表的标题,具体来说是主标题,可以用以下的配置来定制标题的各种样式。

属性 描述 类型 默认值
title 图表标题文字内容 string | (datum, index, data) => string -
titleFontSize 图表标题文字大小 number | (datum, index, data) => number 14
titleFontFamily 图表标题文字字体 string | (datum, index, data) => string sans-serif
titleFontWeight 图表标题字体粗细 number | (datum, index, data) => number normal
titleLineHeight 图表标题文字的行高 number | (datum, index, data) => number 14
titleTextAlign 图表标题文字行内内容的水平对齐方式 string | (datum, index, data) => string center
titleTextBaseline 图表标题文字垂直方向的基线 string | (datum, index, data) => string middle
titleFill 图表标题文字的填充色 string | (datum, index, data) => string #000
titleFillOpacity 图表标题文字的填充透明度 number | (datum, index, data) => number 1
titleStroke 图表标题文字的描边颜色 string | (datum, index, data) => string transparent
titleStrokeOpacity 图表标题文字的描边透明度 number | (datum, index, data) => number 1
titleLineWidth 图表标题文字描边宽度 number | (datum, index, data) => number 0
titleLineDash 图表标题文字虚线样式 number[] | (datum, index, data) => number[] []
titleOpacity 图表标题文字整体透明度 number | (datum, index, data) => number 1
titleShadowColor 图表标题文字阴影颜色 string | (datum, index, data) => string transparent
titleShadowBlur 图表标题文字阴影的高斯模糊系数 number | (datum, index, data) => number 0
titleShadowOffsetX 图表标题文字阴影水平偏移量 number | (datum, index, data) => number 0
titleShadowOffsetY 图表标题文字阴影垂直偏移量 number | (datum, index, data) => number 0
titleCursor 图表标题文字鼠标样式 string | (datum, index, data) => string default
titleDx 图表标题文字在水平方向的偏移量 number | (datum, index, data) => number 0
titleDy 图表标题文字在垂直方向的偏移量 number | (datum, index, data) => number 0

subtitle

图表的副标题,可以用以下的配置来定制副标题的各种样式。

属性 描述 类型 默认值
subtitle 图表副标题文字内容 string | (datum, index, data) => string -
subtitleFontSize 图表副标题文字大小 number | (datum, index, data) => number 12
subtitleFontFamily 图表副标题文字字体 string | (datum, index, data) => string sans-serif
subtitleFontWeight 图表副标题字体粗细 number | (datum, index, data) => number normal
subtitleLineHeight 图表副标题文字的行高 number | (datum, index, data) => number 12
subtitleTextAlign 图表副标题文字行内内容的水平对齐方式 string | (datum, index, data) => string center
subtitleTextBaseline 图表副标题文字垂直方向的基线 string | (datum, index, data) => string middle
subtitleFill 图表副标题文字的填充色 string | (datum, index, data) => string #666
subtitleFillOpacity 图表副标题文字的填充透明度 number | (datum, index, data) => number 1
subtitleStroke 图表副标题文字的描边颜色 string | (datum, index, data) => string transparent
subtitleStrokeOpacity 图表副标题文字的描边透明度 number | (datum, index, data) => number 1
subtitleLineWidth 图表副标题文字描边宽度 number | (datum, index, data) => number 0
subtitleLineDash 图表副标题文字虚线样式 number[] | (datum, index, data) => number[] []
subtitleOpacity 图表副标题文字整体透明度 number | (datum, index, data) => number 1
subtitleShadowColor 图表副标题文字阴影颜色 string | (datum, index, data) => string transparent
subtitleShadowBlur 图表副标题文字阴影的高斯模糊系数 number | (datum, index, data) => number 0
subtitleShadowOffsetX 图表副标题文字阴影水平偏移量 number | (datum, index, data) => number 0
subtitleShadowOffsetY 图表副标题文字阴影垂直偏移量 number | (datum, index, data) => number 0
subtitleCursor 图表副标题文字鼠标样式 string | (datum, index, data) => string default
subtitleDx 图表副标题文字在水平方向的偏移量 number | (datum, index, data) => number 0
subtitleDy 图表副标题文字在垂直方向的偏移量 number | (datum, index, data) => number 0

尝试一下:

import { Chart } from '@antv/g2';

const chart = new Chart({
  container: 'container',
  autoFit: true,
});

chart.options({
  type: 'view',
  title: {
    align: 'right',
    title: 'Sold by genre, sorted by sold',
    titleFontSize: 15,
    subtitle: 'It shows the sales volume of genre, sored by sold.',
    subtitleFill: 'red',
    subtitleFontSize: 12,
    subtitleShadowColor: 'yellow',
    subtitleShadowBlur: 5,
    subtitleFontStyle: 'italic',
  },
});

chart.options({
  type: 'interval',
  data: [
    { genre: 'Sports', sold: 0 },
    { genre: 'Strategy', sold: 115 },
    { genre: 'Action', sold: 120 },
    { genre: 'Shooter', sold: 350 },
    { genre: 'Other', sold: 150 },
  ],
  encode: { x: 'genre', y: 'sold', color: 'genre' },
  style: { minHeight: 50 },
});

chart.render();
全站搜索
文档与示例输入关键词开始搜索

输入关键词,查找文档、API 与示例

选择打开Esc关闭