Guide component is used for annotations of chart. In F2, annotations are driven by data. Being driven by data means that the aesthetics of an annotation object are linked to variables in a dataset in a similar manner to that for a graphic. A text annotation, for example, might be positioned according to a value of a variable, or its color might be determined by a variable value, or its content might be determined by statistical parameters.
We provide 8 types of guide components, we will introduce them and their usage below.
How to Register Guide Plugin
F2 has modular structure provides best tree-shaking results and package size optimization.
If you just import F2 from '@antv/f2', then it has included 6 types Guide by default, they are Arc, Html, Line, Rect, Tag and Text. But if you want a better package size optimization, you can register manually:
If you want to use all types of guide, you can:
constF2=require('@antv/f2/lib/core');// Step 1: require guide componentsrequire('@antv/f2/lib/component/guide');// require all guide components// Step 2: require guide pluginconstGuide=require('@antv/f2/lib/plugin/guide');// Step 3:register Guide pluginF2.Chart.plugins.register(Guide);// Global registeration here, for all chart instances.// Or just for current chart instanceconstchart=newF2.Chart({id:'canvas',plugins:Guide});
or you just want to use several types, you can:
Line
Example Usage
Properties
The global options for the chart guide line is defined in F2.Global.guide.line.
Name
Type
Default
Description
top
Boolean
true
Wether draw the guide line to the top layer of the canvas, defaults to true.
start
Array/Function
Starting position of the guide line. Detail usage see here.
end
Array/Function
Ending point of guide line, use the same way as start.
style
Object
Style for guide line, see Canvas(todo) for more details.
tag content, if you want a text wrapping, just write '\n' in the text, such as 'maximum \n200'.
direct
String
'tl'
direction of tag, if autoAdjust is true,when the tag is outside the chart [plot](todo) area, the direct will be automatically corrected and guaranteed to be in the plot area.
autoAdjust
Boolean
true
If value is true, when the tag is outside the chart plot area, the direct will be automatically corrected and guaranteed to be in the plot area.
The values of the three parameters passed in can be following type:
Array,the value in the array can be the data in dataset, or can be percentage, or keyword(they are 'max', 'min', 'median')
Function: Callback can used to dynamically locate the position. It is often used in the scenario where position of the guide element changes according to the change of the data. Detail demo and code here.
const F2 = require('@antv/f2/lib/core');
// All guide types are listed below, and you can choose one according to your needs.
// Guide.Arc
require('@antv/f2/lib/component/guide/arc');
// Guide.Html
require('@antv/f2/lib/component/guide/html');
// Guide.Text
require('@antv/f2/lib/component/guide/text');
// Guide.Rect
require('@antv/f2/lib/component/guide/rect');
// Guide.Line
require('@antv/f2/lib/component/guide/line');
// Guide.Point
require('@antv/f2/lib/component/guide/point');
// Guide.Tag
require('@antv/f2/lib/component/guide/tag');
// Guide.RegionFilter
require('@antv/f2/lib/component/guide/region-filter');
// Step 2: require guide plugin
const Guide = require('@antv/f2/lib/plugin/guide');
// Step 3:register Guide plugin
F2.Chart.plugins.register(Guide); // Global registeration here, for all chart instances.
// Or just for current chart instance
const chart = new F2.Chart({
id: 'canvas',
plugins: Guide
});
background: {
padding: 20, // padding of the tag, just use as css padding
radius: 5, // the box-radius of tag
fill: '#1890FF', // the background color of tag
}
chart.guide().line({
/**
* @param {Scale} xScale scale of x-axis
* @param {Array} yScales scale array of y-axis
* @return {Array} return value must be an array
*/
start(xScale, yScales) {
return []; // position information
},
/**
* ending point of guide line
* @param {Scale} xScale scale of x-axis
* @param {Array} yScales scale array of y-axis
* @return {Array} return value must be an array
*/
end(xScale, yScales) {
return []; // position information
}
});