Title
Overview
Title indicates the name of the image and conveys the brief content of the image.
Basic Usage
The following is a simple example of initializing the Title plugin:
const graph = new Graph({
plugins: [
{
key: 'title',
type: 'title',
title: 'This is a title',
subTitle: 'This is a subtitle',
},
],
});
Configuration Options
| Option | Description | Type | Default | Required |
|---|---|---|---|---|
| type | Plugin type | string | title |
✓ |
| key | Unique identifier for the plugin, used for subsequent updates | string | - | |
| title | title content style config | TitleStyle |
- | ✓ |
| subtitle | subtitle content style config | SubTitleStyle |
- | |
| spacing | Vertical spacing between main title and subtitle | number | 8 | |
| className | Class name of the title canvas | string | - | |
| align | Graph title alignment | left | center | right |
left |
|
| size | Height of the title plugin | number | 44 | |
| padding | Padding | number | number[] | [16,24,0,24] |
size
Used to configure the space height of the title plugin. Default is 44。
align
Used to configure the horizontal alignment of the title plugin. Default is left. You can choose left, center, or right, representing left-aligned, center-aligned, and right-aligned respectively.
import { createGraph } from '/demo-runtime.ts';
createGraph(
{
data: { nodes: Array.from({ length: 12 }).map((_, i) => ({ id: `node${i}` })) },
node: {
palette: 'spectral',
style: { labelText: 'Ciallo' },
},
behaviors: ['drag-canvas', 'zoom-canvas', 'drag-element'],
plugins: [
{
key: 'title',
type: 'title',
title: 'This is a title This is a title',
subtitle: 'This is a sub-',
},
],
layout: { type: 'circular' },
autoFit: 'view',
},
{ width: 600, height: 300 },
(gui, graph) => {
const options = { align: 'left' };
const optionFolder = gui.addFolder('Align Options');
optionFolder.add(options, 'align', ['left', 'center', 'right']);
optionFolder.onChange(({ property, value }) => {
graph.updatePlugin({
key: 'title',
[property]: value,
});
graph.render();
});
},
);
import { Graph } from '@antv/g6';
import GUI from 'lil-gui';
export function addPanel(renderPanel: (gui: GUI) => void) {
const gui = new GUI({ container: document.body });
gui.title('Control');
Object.assign(gui.domElement.style, { position: 'absolute', top: '0', right: '0', zIndex: '10' });
renderPanel(gui);
addEventListener('pagehide', () => gui.destroy(), { once: true });
}
export async function createGraph(
options: ConstructorParameters<typeof Graph>[0],
size: { width?: number; height?: number } = {},
renderPanel?: (gui: GUI, graph: Graph) => void,
) {
const container = document.createElement('div');
Object.assign(container.style, {
width: '100%',
maxWidth: `${size.width || 600}px`,
height: `${size.height || 400}px`,
});
document.getElementById('container')!.append(container);
const graph = new Graph({ ...size, ...options, width: container.clientWidth, container, autoResize: true });
addEventListener('pagehide', () => graph.destroy(), { once: true });
await graph.render();
if (renderPanel) addPanel((gui) => renderPanel(gui, graph));
return container;
}spacing
Used to configure the spacing between the chart main title and subtitle. Default is 8. Appropriate spacing can make the chart look more harmonious overall.
title
The title, specifically the main title, can be customized with the following configurations for various title styles.
| Attr | Desc | Type | Default |
|---|---|---|---|
| title | Title text content | string |
- |
| titleFontSize | Title text size | number |
16 |
| titleFontFamily | Title text font | string |
system-ui, sans-serif |
| titleFontWeight | Title font weight | number |
bold |
| titleLineHeight | Title text line height | number |
16 |
| titleTextAlign | Horizontal alignment of content in title text line | string |
left |
| titleTextBaseline | Vertical baseline of title text | string |
top |
| titleFill | Fill color of title text | string |
#1D2129 |
| titleFillOpacity | Fill transparency of title text | number |
0.9 |
| titleStroke | Stroke color of title text | string |
transparent |
| titleStrokeOpacity | Stroke transparency of title text | number |
1 |
| titleLineWidth | Stroke width of title text | number |
0 |
| titleLineDash | Dash style of title text | number[] |
[] |
| titleOpacity | Overall transparency of title text | number |
1 |
| titleShadowColor | Shadow color of title text | string |
transparent |
| titleShadowBlur | Gaussian blur coefficient of title text shadow | number |
0 |
| titleShadowOffsetX | Horizontal offset of title text shadow | number |
0 |
| titleShadowOffsetY | Vertical offset of title text shadow | number |
0 |
| titleCursor | Mouse style of title text | string |
default |
| titleDx | Horizontal offset of title text | number |
0 |
| titleDy | Vertical offset of title text | number |
0 |
subtitle
The subtitle, which can be customized with the following configurations for various subtitle styles.
| Attr | Desc | Type | Default |
|---|---|---|---|
| subtitle | Subtitle text content | string |
- |
| subtitleFontSize | Subtitle text size | number |
12 |
| subtitleFontFamily | Subtitle text font | string |
system-ui, sans-serif |
| subtitleFontWeight | Subtitle font weight | number |
normal |
| subtitleLineHeight | Subtitle text line height | number |
12 |
| subtitleTextAlign | Subtitle text line content horizontal alignment | string |
left |
| subtitleTextBaseline | Subtitle text vertical baseline | string |
top |
| subtitleFill | Subtitle text fill color | string |
#1D2129 |
| subtitleFillOpacity | Subtitle text fill transparency | number |
0.65 |
| subtitleStroke | Subtitle text stroke color | string |
transparent |
| subtitleStrokeOpacity | Subtitle text stroke transparency | number |
1 |
| subtitleLineWidth | Subtitle text stroke width | number |
0 |
| subtitleLineDash | Subtitle text dashed line style | number[] |
[] |
| subtitleOpacity | Subtitle text overall transparency | number |
1 |
| subtitleShadowColor | Subtitle text shadow color | string |
transparent |
| subtitleShadowBlur | Subtitle text shadow Gaussian blur coefficient | number |
0 |
| subtitleShadowOffsetX | Subtitle text shadow horizontal offset | number |
0 |
| subtitleShadowOffsetY | Subtitle text shadow vertical offset | number |
0 |
| subtitleCursor | Subtitle text mouse style | string |
default |
| subtitleDx | Subtitle text horizontal offset | number |
0 |
| subtitleDy | Subtitle text vertical offset | number |
0 |
Try it
Feel free to modify this example and try different configurations
import { Graph } from '@antv/g6';
const graph = new Graph({
container: 'container',
data: { nodes: Array.from({ length: 12 }).map((_, i) => ({ id: `node${i}` })) },
behaviors: ['drag-canvas', 'zoom-canvas', 'drag-element'],
plugins: [
{
key: 'title',
type: 'title',
align: 'center', // Alignment of title
spacing: 4, // Spacing between main title and subtitle
size: 60, // Height of title, default is 44
// title
title: 'This is a title This is a title', // Title text
titleFontSize: 28, // Main title font size
titleFontFamily: 'sans-serif', // Main title font
titleFontWeight: 600, // Main title font weight
titleFill: '#fff', // Main title text color
titleFillOpacity: 1, // Main title text transparency
titleStroke: '#000', // Main title text stroke color
titleLineWidth: 2, // Main title text stroke line width
titleStrokeOpacity: 1, // Main title text stroke transparency
// subtitle
subtitle: 'This is a sub-', // Subtitle text
subtitleFontSize: 16, // Subtitle font size
subtitleFontFamily: 'Arial', // Subtitle font
subtitleFontWeight: 300, // Subtitle font weight
subtitleFill: '#2989FF', // Subtitle text color
subtitleFillOpacity: 1, // Subtitle text transparency
subtitleStroke: '#000', // Subtitle text stroke color
subtitleLineWidth: 1, // Subtitle text stroke line width
subtitleStrokeOpacity: 0.5, // Subtitle text stroke transparency
},
],
node: {
palette: 'spectral',
style: { labelText: 'Ciallo' },
},
layout: {
type: 'circular',
},
autoFit: 'view',
});
graph.render();
import { Graph } from '@antv/g6';
import GUI from 'lil-gui';
export function addPanel(renderPanel: (gui: GUI) => void) {
const gui = new GUI({ container: document.body });
gui.title('Control');
Object.assign(gui.domElement.style, { position: 'absolute', top: '0', right: '0', zIndex: '10' });
renderPanel(gui);
addEventListener('pagehide', () => gui.destroy(), { once: true });
}
export async function createGraph(
options: ConstructorParameters<typeof Graph>[0],
size: { width?: number; height?: number } = {},
renderPanel?: (gui: GUI, graph: Graph) => void,
) {
const container = document.createElement('div');
Object.assign(container.style, {
width: '100%',
maxWidth: `${size.width || 600}px`,
height: `${size.height || 400}px`,
});
document.getElementById('container')!.append(container);
const graph = new Graph({ ...size, ...options, width: container.clientWidth, container, autoResize: true });
addEventListener('pagehide', () => graph.destroy(), { once: true });
await graph.render();
if (renderPanel) addPanel((gui) => renderPanel(gui, graph));
return container;
}