13 Jun 202424 minutes to read
Annotations are used to mark the specific area of interest in the chart area with texts, shapes or images.
You can add annotations to the chart by using theannotations option. By using thecontent option of annotation object, you can specify
the id of the element that needs to be displayed in the chart area.
<template><divid="app"><ejs-chartid="container":title='title':primaryXAxis='primaryXAxis':primaryYAxis='primaryYAxis':annotations='annotations'><e-series-collection><e-series:dataSource='seriesData'type='Column'xName='country'yName='gold'name='Gold'></e-series></e-series-collection></ejs-chart></div></template><scriptsetup>import{provide}from"vue";import{ChartComponentasEjsChart,SeriesCollectionDirectiveasESeriesCollection,SeriesDirectiveasESeries,ColumnSeries,Category,ChartAnnotation}from"@syncfusion/ej2-vue-charts";constseriesData=[{country:"USA",gold:50},{country:"China",gold:40},{country:"Japan",gold:70},{country:"Australia",gold:60},{country:"France",gold:50},{country:"Germany",gold:40},{country:"Italy",gold:40},{country:"Sweden",gold:30}];constannotations=[{content:'70 Gold Medals',coordinateUnits:'Point',x:'France',y:50}];constprimaryXAxis={valueType:'Category',title:'Countries'};constprimaryYAxis={minimum:0,maximum:80,interval:20,title:'Medals'};consttitle="Olympic Medals";provide('chart',[ColumnSeries,Category,ChartAnnotation]);</script><style>#container{height:350px;}</style><template><divid="app"><ejs-chartid="container":title='title':primaryXAxis='primaryXAxis':primaryYAxis='primaryYAxis':annotations='annotations'><e-series-collection><e-series:dataSource='seriesData'type='Column'xName='country'yName='gold'name='Gold'></e-series></e-series-collection></ejs-chart></div></template><script>import{ChartComponent,SeriesCollectionDirective,SeriesDirective,ColumnSeries,Category,ChartAnnotation}from"@syncfusion/ej2-vue-charts";exportdefault{name:"App",components:{'ejs-chart':ChartComponent,'e-series-collection':SeriesCollectionDirective,'e-series':SeriesDirective},data(){return{seriesData:[{country:"USA",gold:50},{country:"China",gold:40},{country:"Japan",gold:70},{country:"Australia",gold:60},{country:"France",gold:50},{country:"Germany",gold:40},{country:"Italy",gold:40},{country:"Sweden",gold:30}],annotations:[{content:'70 Gold Medals',coordinateUnits:'Point',x:'France',y:50}],primaryXAxis:{valueType:'Category',title:'Countries'},primaryYAxis:{minimum:0,maximum:80,interval:20,title:'Medals'},title:"Olympic Medals"};},provide:{chart:[ColumnSeries,Category,ChartAnnotation]},};</script><style>#container{height:350px;}</style>Note: To use annotation feature in chart, we need to inject
ChartAnnotationinto theprovide.
Annotations can be placed either with respect toSeries orChart. by default, it will placed with respect
toChart.
<template><divid="app"><ejs-chartid="container":title='title':primaryXAxis='primaryXAxis':primaryYAxis='primaryYAxis':annotations='annotations'><e-series-collection><e-series:dataSource='seriesData'type='Column'xName='country'yName='gold'name='Gold'></e-series></e-series-collection></ejs-chart></div></template><scriptsetup>import{provide,createApp}from"vue";import{ChartComponentasEjsChart,SeriesCollectionDirectiveasESeriesCollection,SeriesDirectiveasESeries,ColumnSeries,Category,ChartAnnotation}from"@syncfusion/ej2-vue-charts";constapp=createApp();letcontentVue=app.component("contentTemplate",{template:'<div>Highest Medal Count</div>',data(){return{data:{}};}});letcontentTemplate=function(){return{template:contentVue};};constseriesData=[{country:"USA",gold:50},{country:"China",gold:40},{country:"Japan",gold:70},{country:"Australia",gold:60},{country:"France",gold:50},{country:"Germany",gold:40},{country:"Italy",gold:40},{country:"Sweden",gold:30}];constannotations=[{content:contentTemplate,region:'Series',coordinateUnits:'Point',x:'France',y:50}];constprimaryXAxis={valueType:'Category',title:'Countries'};constprimaryYAxis={minimum:0,maximum:80,interval:20,title:'Medals'};consttitle="Olympic Medals";provide('chart',[ColumnSeries,Category,ChartAnnotation]);</script><style>#container{height:350px;}</style><template><divid="app"><ejs-chartid="container":title='title':primaryXAxis='primaryXAxis':primaryYAxis='primaryYAxis':annotations='annotations'><e-series-collection><e-series:dataSource='seriesData'type='Column'xName='country'yName='gold'name='Gold'></e-series></e-series-collection></ejs-chart></div></template><script>import{ChartComponent,SeriesCollectionDirective,SeriesDirective,ColumnSeries,Category,ChartAnnotation}from"@syncfusion/ej2-vue-charts";import{createApp}from"vue";constapp=createApp();letcontentVue=app.component("contentTemplate",{template:'<div>Highest Medal Count</div>',data(){return{data:{}};}});letcontentTemplate=function(){return{template:contentVue};};exportdefault{name:"App",components:{'ejs-chart':ChartComponent,'e-series-collection':SeriesCollectionDirective,'e-series':SeriesDirective},data(){return{seriesData:[{country:"USA",gold:50},{country:"China",gold:40},{country:"Japan",gold:70},{country:"Australia",gold:60},{country:"France",gold:50},{country:"Germany",gold:40},{country:"Italy",gold:40},{country:"Sweden",gold:30}],annotations:[{content:contentTemplate,region:'Series',coordinateUnits:'Point',x:'France',y:50}],primaryXAxis:{valueType:'Category',title:'Countries'},primaryYAxis:{minimum:0,maximum:80,interval:20,title:'Medals'},title:"Olympic Medals"};},provide:{chart:[ColumnSeries,Category,ChartAnnotation]},};</script><style>#container{height:350px;}</style>Specified the coordinates units of the annotation eitherPixel orPoint.
<template><divid="app"><ejs-chartid="container":title='title':primaryXAxis='primaryXAxis':primaryYAxis='primaryYAxis':annotations='annotations'><e-series-collection><e-series:dataSource='seriesData'type='Column'xName='country'yName='gold'name='Gold'></e-series></e-series-collection></ejs-chart></div></template><scriptsetup>import{provide,createApp}from"vue";import{ChartComponentasEjsChart,SeriesCollectionDirectiveasESeriesCollection,SeriesDirectiveasESeries,ColumnSeries,Category,ChartAnnotation}from"@syncfusion/ej2-vue-charts";constapp=createApp()letcontentVue=app.component("contentTemplate",{template:'<div>Annotation in Pixel</div>',data(){return{data:{}};}});letcontentTemplate=function(){return{template:contentVue};};constseriesData=[{country:"USA",gold:50},{country:"China",gold:40},{country:"Japan",gold:70},{country:"Australia",gold:60},{country:"France",gold:50},{country:"Germany",gold:40},{country:"Italy",gold:40},{country:"Sweden",gold:30}];constannotations=[{content:contentTemplate,coordinateUnits:'Pixel',x:150,y:50}];constprimaryXAxis={valueType:'Category',title:'Countries'};constprimaryYAxis={minimum:0,maximum:80,interval:20,title:'Medals'};consttitle="Olympic Medals";provide('chart',[ColumnSeries,Category,ChartAnnotation]);</script><style>#container{height:350px;}</style><template><divid="app"><ejs-chartid="container":title='title':primaryXAxis='primaryXAxis':primaryYAxis='primaryYAxis':annotations='annotations'><e-series-collection><e-series:dataSource='seriesData'type='Column'xName='country'yName='gold'name='Gold'></e-series></e-series-collection></ejs-chart></div></template><script>import{ChartComponent,SeriesCollectionDirective,SeriesDirective,ColumnSeries,Category,ChartAnnotation}from"@syncfusion/ej2-vue-charts";import{createApp}from'vue';constapp=createApp();letcontentVue=app.component("contentTemplate",{template:'<div>Annotation in Pixel</div>',data(){return{data:{}};}});letcontentTemplate=function(){return{template:contentVue};};exportdefault{name:"App",components:{'ejs-chart':ChartComponent,'e-series-collection':SeriesCollectionDirective,'e-series':SeriesDirective},data(){return{seriesData:[{country:"USA",gold:50},{country:"China",gold:40},{country:"Japan",gold:70},{country:"Australia",gold:60},{country:"France",gold:50},{country:"Germany",gold:40},{country:"Italy",gold:40},{country:"Sweden",gold:30}],annotations:[{content:contentTemplate,coordinateUnits:'Pixel',x:150,y:50}],primaryXAxis:{valueType:'Category',title:'Countries'},primaryYAxis:{minimum:0,maximum:80,interval:20,title:'Medals'},title:"Olympic Medals"};},provide:{chart:[ColumnSeries,Category,ChartAnnotation]},};</script><style>#container{height:350px;}</style>Annotation providesverticalAlignment andhorizontalAlignment. TheverticalAlignment can be customized
viaTop,Bottom orMiddle and thehorizontalAlignment can be customized viaNear,Far orCenter.
<template><divid="app"><ejs-chartid="container":title='title':primaryXAxis='primaryXAxis':primaryYAxis='primaryYAxis':annotations='annotations'><e-series-collection><e-series:dataSource='seriesData'type='Column'xName='country'yName='gold'name='Gold'></e-series></e-series-collection></ejs-chart></div></template><scriptsetup>import{provide,createApp}from"vue";import{ChartComponentasEjsChart,SeriesCollectionDirectiveasESeriesCollection,SeriesDirectiveasESeries,ColumnSeries,Category,ChartAnnotation}from"@syncfusion/ej2-vue-charts";constapp=createApp();letcontentVue=app.component("contentTemplate",{template:'<div>Highest Medal Count</div>',data(){return{data:{}};}});letcontentTemplate=function(){return{template:contentVue};};constseriesData=[{country:"USA",gold:50},{country:"China",gold:40},{country:"Japan",gold:70},{country:"Australia",gold:60},{country:"France",gold:50},{country:"Germany",gold:40},{country:"Italy",gold:40},{country:"Sweden",gold:30}];constannotations=[{content:contentTemplate,x:'France',y:50,verticalAlignment:'Top',horizontalAlignment:'Near'}];constprimaryXAxis={valueType:'Category',title:'Countries'};constprimaryYAxis={minimum:0,maximum:80,interval:20,title:'Medals'};consttitle="Olympic Medals";provide('chart',[ColumnSeries,Category,ChartAnnotation]);</script><style>#container{height:350px;}</style><template><divid="app"><ejs-chartid="container":title='title':primaryXAxis='primaryXAxis':primaryYAxis='primaryYAxis':annotations='annotations'><e-series-collection><e-series:dataSource='seriesData'type='Column'xName='country'yName='gold'name='Gold'></e-series></e-series-collection></ejs-chart></div></template><script>import{ChartComponent,SeriesCollectionDirective,SeriesDirective,ColumnSeries,Category,ChartAnnotation}from"@syncfusion/ej2-vue-charts";import{createApp}from'vue';constapp=createApp();letcontentVue=app.component("contentTemplate",{template:'<div>Highest Medal Count</div>',data(){return{data:{}};}});letcontentTemplate=function(){return{template:contentVue};};exportdefault{name:"App",components:{'ejs-chart':ChartComponent,'e-series-collection':SeriesCollectionDirective,'e-series':SeriesDirective},data(){return{seriesData:[{country:"USA",gold:50},{country:"China",gold:40},{country:"Japan",gold:70},{country:"Australia",gold:60},{country:"France",gold:50},{country:"Germany",gold:40},{country:"Italy",gold:40},{country:"Sweden",gold:30}],annotations:[{content:contentTemplate,x:'France',y:50,verticalAlignment:'Top',horizontalAlignment:'Near'}],primaryXAxis:{valueType:'Category',title:'Countries'},primaryYAxis:{minimum:0,maximum:80,interval:20,title:'Medals'},title:"Olympic Medals"};},provide:{chart:[ColumnSeries,Category,ChartAnnotation]},};</script><style>#container{height:350px;}</style>By setting text div in thecontent option of annotation object you can add sub title to chart y-axis. Specified thecoordinate value aspixel and customize x and y location of the text.
<template><divid="app"><ejs-chartid="container":title='title':primaryXAxis='primaryXAxis':primaryYAxis='primaryYAxis':annotations='annotations'><e-series-collection><e-series:dataSource='seriesData'type='Column'xName='country'yName='gold'name='Gold'></e-series></e-series-collection></ejs-chart></div></template><scriptsetup>import{provide,createApp}from"vue";import{ChartComponentasEjsChart,SeriesCollectionDirectiveasESeriesCollection,SeriesDirectiveasESeries,ColumnSeries,Category,ChartAnnotation}from"@syncfusion/ej2-vue-charts";constapp=createApp();letcontentVue=app.component("contentTemplate",{template:'<div>Speed Rate</div>',data(){return{data:{}};}});letcontentTemplate=function(){return{template:contentVue};};constseriesData=[{country:"USA",gold:50},{country:"China",gold:40},{country:"Japan",gold:70},{country:"Australia",gold:60},{country:"France",gold:50},{country:"Germany",gold:40},{country:"Italy",gold:40},{country:"Sweden",gold:30}];constannotations=[{content:contentTemplate,coordinateUnits:'Pixel',x:13,y:180,region:'Chart'}];constprimaryXAxis={valueType:'Category',title:'Countries'};constprimaryYAxis={minimum:0,maximum:80,interval:20,title:'(m2/min)'};consttitle="Olympic Medals";provide('chart',[ColumnSeries,Category,ChartAnnotation]);</script><style>#container{height:350px;}</style><template><divid="app"><ejs-chartid="container":title='title':primaryXAxis='primaryXAxis':primaryYAxis='primaryYAxis':annotations='annotations'><e-series-collection><e-series:dataSource='seriesData'type='Column'xName='country'yName='gold'name='Gold'></e-series></e-series-collection></ejs-chart></div></template><script>import{ChartComponent,SeriesCollectionDirective,SeriesDirective,ColumnSeries,Category,ChartAnnotation}from"@syncfusion/ej2-vue-charts";import{createApp}from'vue';constapp=createApp();letcontentVue=app.component("contentTemplate",{template:'<div>Speed Rate</div>',data(){return{data:{}};}});letcontentTemplate=function(){return{template:contentVue};};exportdefault{name:"App",components:{'ejs-chart':ChartComponent,'e-series-collection':SeriesCollectionDirective,'e-series':SeriesDirective},data(){return{seriesData:[{country:"USA",gold:50},{country:"China",gold:40},{country:"Japan",gold:70},{country:"Australia",gold:60},{country:"France",gold:50},{country:"Germany",gold:40},{country:"Italy",gold:40},{country:"Sweden",gold:30}],annotations:[{content:contentTemplate,coordinateUnits:'Pixel',x:13,y:180,region:'Chart'}],primaryXAxis:{valueType:'Category',title:'Countries'},primaryYAxis:{minimum:0,maximum:80,interval:20,title:'(m2/min)'},title:"Olympic Medals"};},provide:{chart:[ColumnSeries,Category,ChartAnnotation]},};</script><style>#container{height:350px;}</style>