Chart types in Vue Chart component

29 Mar 202324 minutes to read

Essential JS 2 Chart supports 32 types of series.

Line Charts

  • Line

To render a line series, use series type as Line and
inject LineSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='Line' xName='x' yName='y' name='India'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, LineSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData: [
             { x: 2005, y: 28 }, { x: 2006, y: 25 },{ x: 2007, y: 26 }, { x: 2008, y: 27 },
             { x: 2009, y: 32 }, { x: 2010, y: 35 }, { x: 2011, y: 30 }
              ],
      title: "Efficiency of oil-fired power production"
    };
  },
  provide: {
    chart: [LineSeries]
  }
};
</script>
<style>
  #container {
   height: 350px;
 }
</style>

  • Step Line

To render a step line series, use series type as StepLine and inject StepLineSeries into
the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='StepLine' xName='x' yName='y' name='USA'  width=2> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StepLineSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
             { x: 2006, y: 378 }, { x: 2007, y: 416 },
             { x: 2008, y: 404 }, { x: 2009, y: 390 },
             { x: 2010, y: 376 }, { x: 2011, y: 365 }
        ],
      title: "CO2 - Intensity Analysis"
    };
  },
  provide: {
    chart: [StepLineSeries]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Spline

To render a spline series, use series type as Spline and inject SplineSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="chartcontainer"
        :title="title"
        :primaryXAxis="primaryXAxis"
        :primaryYAxis="primaryYAxis"
        :tooltip="tooltip"
        :chartArea="chartArea">
            <e-series-collection>
               <e-series :dataSource="seriesData" type="StackingLine" xName="x"          yName="y" name="John" width="2" dashArray="5,1" :marker="marker" ></e-series>
            <e-series :dataSource="seriesData" type="StackingLine" xName="x" yName="y1"            name="Peter" width="2" dashArray="5,1" :marker="marker" ></e-series>
            <e-series :dataSource="seriesData" type="StackingLine" xName="x" yName="y2"
              name="Steve" width="2" dashArray="5,1" :marker="marker" ></e-series>
            <e-series :dataSource="seriesData" type="StackingLine" xName="x" yName="y3"
               name="Charle" width="2" dashArray="5,1" :marker="marker" ></e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import {   ChartPlugin,StackingLineSeries,Legend,Tooltip,Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData: [
              { x: "Food", y: 90, y1: 40, y2: 70, y3: 120 },
              { x: "Transport", y: 80, y1: 90, y2: 110, y3: 70 },
              { x: "Medical", y: 50, y1: 80, y2: 120, y3: 50 },
              { x: "Clothes", y: 70, y1: 30, y2: 60, y3: 180 },
              { x: "Personal Care", y: 30, y1: 80, y2: 80, y3: 30 },
              { x: "Books", y: 10, y1: 40, y2: 30, y3: 270 },
              { x: "Fitness", y: 100, y1: 30, y2: 70, y3: 40 },
              { x: "Electricity", y: 55, y1: 95, y2: 55, y3: 75 },
              { x: "Tax", y: 20, y1: 50, y2: 40, y3: 65 },
              { x: "Pet Care", y: 40, y1: 20, y2: 80, y3: 95 },
              { x: "Education", y: 45, y1: 15, y2: 45, y3: 195 },
              { x: "Entertainment", y: 75, y1: 45, y2: 65, y3: 115 }
              ],
      primaryXAxis: {
          majorGridLines: { width: 0 },
          minorGridLines: { width: 0 },
          majorTickLines: { width: 0 },
          minorTickLines: { width: 0 },
          interval: 1,
          lineStyle: { width: 0 },
          valueType: "Category"
      },primaryYAxis: {
        title: "Expense",
        lineStyle: { width: 0 },
        minimum: 0,
        maximum: 400,
        interval: 100,
        majorTickLines: { width: 0 },
        majorGridLines: { width: 1 },
        minorGridLines: { width: 1 },
        minorTickLines: { width: 0 },
        labelFormat: "${value}"
      },
      chartArea: {
        border: {
          width: 0
        }
      },
      marker: {
        visible: true
      },
      tooltip: {
        enable: true
      },
      title: "Family Expense for Month"
    };
  },
  provide: {
    chart: [StackingLineSeries, Legend, Tooltip, Category]
  }
};
</script>
<style>
  #container {
   height: 350px;
 }
</style>

  • 100% Stacked Line

To render a 100% Stacked Line series, use series type as StackingLine100 and
inject StackingLineSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="chartcontainer"
        :title="title"
        :primaryXAxis="primaryXAxis"
        :primaryYAxis="primaryYAxis"
        :tooltip="tooltip"
        :chartArea="chartArea">
            <e-series-collection>
               <e-series :dataSource="seriesData" type="StackingLine100" xName="x"          yName="y" name="John" width="2" dashArray="5,1" :marker="marker" ></e-series>
            <e-series :dataSource="seriesData" type="StackingLine100" xName="x" yName="y1"            name="Peter" width="2" dashArray="5,1" :marker="marker" ></e-series>
            <e-series :dataSource="seriesData" type="StackingLine100" xName="x" yName="y2"
              name="Steve" width="2" dashArray="5,1" :marker="marker" ></e-series>
            <e-series :dataSource="seriesData" type="StackingLine100" xName="x" yName="y3"
               name="Charle" width="2" dashArray="5,1" :marker="marker" ></e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import {   ChartPlugin,StackingLineSeries,Legend,Tooltip,Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData: [
              { x: "Food", y: 90, y1: 40, y2: 70, y3: 120 },
              { x: "Transport", y: 80, y1: 90, y2: 110, y3: 70 },
              { x: "Medical", y: 50, y1: 80, y2: 120, y3: 50 },
              { x: "Clothes", y: 70, y1: 30, y2: 60, y3: 180 },
              { x: "Personal Care", y: 30, y1: 80, y2: 80, y3: 30 },
              { x: "Books", y: 10, y1: 40, y2: 30, y3: 270 },
              { x: "Fitness", y: 100, y1: 30, y2: 70, y3: 40 },
              { x: "Electricity", y: 55, y1: 95, y2: 55, y3: 75 },
              { x: "Tax", y: 20, y1: 50, y2: 40, y3: 65 },
              { x: "Pet Care", y: 40, y1: 20, y2: 80, y3: 95 },
              { x: "Education", y: 45, y1: 15, y2: 45, y3: 195 },
              { x: "Entertainment", y: 75, y1: 45, y2: 65, y3: 115 }
              ],
      primaryXAxis: {
         majorGridLines: { width: 0 },
        minorGridLines: { width: 0 },
        majorTickLines: { width: 0 },
        minorTickLines: { width: 0 },
        interval: 1,
        lineStyle: { width: 0 },
        valueType: "Category"
      },primaryYAxis: {
        title: "Expense",
        lineStyle: { width: 0 },
        interval: 20,
        minorTickLines: { width: 0 },
        majorTickLines: { width: 0 },
        majorGridLines: { width: 1 },
        minorGridLines: { width: 1 }
      },
      chartArea: {
        border: {
          width: 0
        }
      },
       marker: {
        visible: true
      },
      tooltip: {
        enable: true,
        format: "${point.x} : <b>${point.y} (${point.percentage}%)</b>"
      },
      title: "Family Expense for Month"
    };
  },
  provide: {
    chart: [StackingLineSeries, Legend, Tooltip, Category]
  }
};
</script>
<style>
  #container {
   height: 350px;
 }
</style>

  • Spline

To render a spline series, use series type as Spline and inject SplineSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='Spline' xName='x' yName='y' name='London'  width=2
                :marker='marker'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, SplineSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
              { x: 'Jan', y: -1 }, { x: 'Feb', y: -1 }, { x: 'Mar', y: 2 },
              { x: 'Apr', y: 8 }, { x: 'May', y: 13 }, { x: 'Jun', y: 18 },
              { x: 'Jul', y: 21 }, { x: 'Aug', y: 20 }, { x: 'Sep', y: 16 },
              { x: 'Oct', y: 10 }, { x: 'Nov', y: 4 }, { x: 'Dec', y: 0 }
        ],
        primaryXAxis: {
           title: 'Month',
           valueType: 'Category'
        },
      marker: { visible: true, width: 10, height: 10 },
      title: "Climate Graph-2012"
    };
  },
  provide: {
    chart: [SplineSeries, Category]
  }
};
</script>
<style>
#container {
   height: 350px;
 }
</style>

  • Spline Area

To render a spline series, use series type as Spline and
inject SplineAreaSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='SplineArea' xName='x' yName='y' name='London'  width=2
                :marker='marker'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, SplineAreaSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
              { x: 'Jan', y: -1 }, { x: 'Feb', y: -1 }, { x: 'Mar', y: 2 },
              { x: 'Apr', y: 8 }, { x: 'May', y: 13 }, { x: 'Jun', y: 18 },
              { x: 'Jul', y: 21 }, { x: 'Aug', y: 20 }, { x: 'Sep', y: 16 },
              { x: 'Oct', y: 10 }, { x: 'Nov', y: 4 }, { x: 'Dec', y: 0 }
        ],
        primaryXAxis: {
           title: 'Month',
           valueType: 'Category'
        },
      marker: { visible: true, width: 10, height: 10 },
      title: "Climate Graph-2012"
    };
  },
  provide: {
    chart: [SplineAreaSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Multicolored Line

To render a multicolored line series, use the series type as MultiColoredLine, and inject the
MultiColoredLineSeries into the provide. Here, the individual colors to the data can be mapped by using pointColorMapping.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='MultiColoredLine' xName='x' yName='y' name='London'  width=2
                :marker='marker' pointColorMapping= 'color'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, MultiColoredLineSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
        { x: 2005, y: 28 , color: 'red'}, { x: 2006, y: 25, color:'green'},
        { x: 2007, y: 26, color: '#ff0097' }, { x: 2008, y: 27, color: 'crimson' },
        { x: 2009, y: 32, color: 'blue' }, { x: 2010, y: 35 ,color: 'darkorange'}
        ],
      marker: { visible: true, width: 10, height: 10 },
      title: "Climate Graph-2012"
    };
  },
  provide: {
    chart: [MultiColoredLineSeries]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Customization of Line Charts

stroke, stroke-width and dashArray of all line type series can be customized by using fill, width and dashArray properties.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='Line' xName='x' yName='y' name='India'
                fill='green' width=3 dashArray='5,5' :marker='marker'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, LineSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
             { x: 2005, y: 28 }, { x: 2006, y: 25 },{ x: 2007, y: 26 }, { x: 2008, y: 27 },
             { x: 2009, y: 32 }, { x: 2010, y: 35 }, { x: 2011, y: 30 }
        ],
      title: "Efficiency of oil-fired power production",
      marker: { visible: true },
    };
  },
  provide: {
    chart: [LineSeries]
  },
};
</script>
<style>
#container {
   height: 350px;
 }
</style>

Area Charts

  • Area

To render a area series, use series type as Area and inject AreaSeries into the provide.

<template>
    <div id="app">
         <ejs-chart>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='Area' xName='x' yName='y' name='India'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, AreaSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
             { x: 1900, y: 4 }, { x: 1920, y: 3.0 },{ x: 1940, y: 3.8 },
             { x: 1960, y: 3.4 }, { x: 1980, y: 3.2 }, { x: 2000, y: 3.9 }
        ]
    };
  },
  provide: {
    chart: [AreaSeries]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Range Area

To render a range area series, use series type as RangeArea and inject RangeAreaSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis' :primaryYAxis='primaryYAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='RangeArea' xName='x' high='high' low='low'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, RangeAreaSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
            { x: 'Jan', low: 0.7, high: 6.1 }, { x: 'Feb', low: 1.3, high: 6.3 },
            { x: 'Mar', low: 1.9, high: 8.5 }, { x: 'Apr', low: 3.1, high: 10.8 },
            { x: 'May', low: 5.7, high: 14.4 }, { x: 'June', low: 8.4, high: 16.9 },
            { x: 'July', low: 10.6, high: 19.2 }, { x: 'Aug', low: 10.5, high: 18.9 },
            { x: 'Sep', low: 8.5, high: 16.1 }, { x: 'Oct', low: 6.0, high: 12.5 },
            { x: 'Nov', low: 1.5, high: 6.9 }, { x: 'Dec', low: 5.1, high: 12.1 }
        ],
        primaryXAxis: {
           title: 'Month',valueType: 'Category',
           edgeLabelPlacement: 'Shift'
        },
        primaryYAxis: {
            title: 'Temperature(Celsius)',
            minimum: 0, maximum: 20
        },
         title: "Maximum and Minimum Temperature"
    };
  },
  provide: {
    chart: [RangeAreaSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Spline Range Area

The Spline Range Area Chart is used to display continuous data points as a set of splines that vary between high and low values over intervals of time and across different categories.

To render a spline range area series, use series type as SplineRangeArea and inject SplineRangeAreaSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis' :primaryYAxis='primaryYAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='SplineRangeArea' xName='x' high='high' low='low' name='England'> </e-series>
                <e-series :dataSource='seriesData1' type='SplineRangeArea' xName='x' high='high' low='low' name='India'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, SplineRangeAreaSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
            { x: 'Jan', high: 14, low: 4 },
            { x: 'Feb', high: 17, low: 7 },
            { x: 'Mar', high: 20, low: 10 },
            { x: 'Apr', high: 22, low: 12 },
            { x: 'May', high: 20, low: 10 },
            { x: 'Jun', high: 17, low: 7 },
            { x: 'Jul', high: 15, low: 5 },
            { x: 'Aug', high: 17, low: 7 },
            { x: 'Sep', high: 20, low: 10 },
            { x: 'Oct', high: 22, low: 12 },
            { x: 'Nov', high: 20, low: 10 },
            { x: 'Dec', high: 17, low: 7 }
        ],
      seriesData1:[
            { x: 'Jan', high: 29, low: 19 },
            { x: 'Feb', high: 32, low: 22 },
            { x: 'Mar', high: 35, low: 25 },
            { x: 'Apr', high: 37, low: 27 },
            { x: 'May', high: 35, low: 25 },
            { x: 'Jun', high: 32, low: 22 },
            { x: 'Jul', high: 30, low: 20 },
            { x: 'Aug', high: 32, low: 22 },
            { x: 'Sep', high: 35, low: 25 },
            { x: 'Oct', high: 37, low: 27 },
            { x: 'Nov', high: 35, low: 25 },
            { x: 'Dec', high: 32, low: 22 }
        ],
        primaryXAxis: {
            valueType: 'Category',
            edgeLabelPlacement: 'Shift',
            majorGridLines: { width: 0 }
        },
        primaryYAxis: {
            labelFormat: '{value}ËšC',
            lineStyle: { width: 0 },
            minimum: 0,
            maximum: 40,
            majorTickLines: { width: 0 }
        },
        title: 'Monthly Temperature Range'
    };
  },
  provide: {
    chart: [SplineRangeAreaSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Stacked Area

To render a stacked area series, use series type as StackingArea and inject StackingAreaSeries into the provide.

<template>
    <div id="app">
         <ejs-chart :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='StackingArea' xName='x' yName='y' name='Organic'> </e-series>
                <e-series :dataSource='seriesData' type='StackingArea' xName='x' yName='y1' name='Fair-trade'> </e-series>
                <e-series :dataSource='seriesData' type='StackingArea' xName='x' yName='y2' name='Veg Alternatives'> </e-series>
                <e-series :dataSource='seriesData' type='StackingArea' xName='x' yName='y3' name='Others'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StackingAreaSeries, DateTime } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
              { x: new Date(2000, 0, 1), y: 0.61, y1: 0.03, y2: 0.48, y3: 0.23 },
              { x: new Date(2001, 0, 1), y: 0.81, y1: 0.05, y2: 0.53, y3: 0.17 },
              { x: new Date(2002, 0, 1), y: 0.91, y1: 0.06, y2: 0.57, y3: 0.17 },
              { x: new Date(2003, 0, 1), y: 1, y1: 0.09, y2: 0.61, y3: 0.20 },
              { x: new Date(2004, 0, 1), y: 1.19, y1: 0.14, y2: 0.63, y3: 0.23 },
              { x: new Date(2005, 0, 1), y: 1.47, y1: 0.20, y2: 0.64, y3: 0.36 },
              { x: new Date(2006, 0, 1), y: 1.74, y1: 0.29, y2: 0.66, y3: 0.43 },
              { x: new Date(2007, 0, 1), y: 1.98, y1: 0.46, y2: 0.76, y3: 0.52 },
              { x: new Date(2008, 0, 1), y: 1.99, y1: 0.64, y2: 0.77, y3: 0.72 },
              { x: new Date(2009, 0, 1), y: 1.70, y1: 0.75, y2: 0.55, y3: 1.29 },
              { x: new Date(2010, 0, 1), y: 1.48, y1: 1.06, y2: 0.54, y3: 1.38 },
              { x: new Date(2011, 0, 1), y: 1.38, y1: 1.25, y2: 0.57, y3: 1.82 },
              { x: new Date(2012, 0, 1), y: 1.66, y1: 1.55, y2: 0.61, y3: 2.16 },
              { x: new Date(2013, 0, 1), y: 1.66, y1: 1.55, y2: 0.67, y3: 2.51 },
              { x: new Date(2014, 0, 1), y: 1.67, y1: 1.65, y2: 0.67, y3: 2.61 }
        ],
        primaryXAxis: {
            valueType: 'DateTime'
        },
         title: "Trend in Sales of Ethical Produce"
    };
  },
  provide: {
    chart: [StackingAreaSeries, DateTime]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • 100% Stacked Area

To render a 100% stacked area series, use series type as StackingArea100 and inject StackingAreaSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='StackingArea100' xName='x' yName='y' name='USA'> </e-series>
                <e-series :dataSource='seriesData' type='StackingArea100' xName='x' yName='y1' name='UK'> </e-series>
                <e-series :dataSource='seriesData' type='StackingArea100' xName='x' yName='y2' name='Canada'> </e-series>
                <e-series :dataSource='seriesData' type='StackingArea100' xName='x' yName='y3' name='China'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StackingAreaSeries, DateTime } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
             { x: new Date(2006, 0, 1), y: 34, y1: 51, y2: 14, y3: 37 },
             { x: new Date(2007, 0, 1), y: 20, y1: 26, y2: 34, y3: 15 },
             { x: new Date(2008, 0, 1), y: 40, y1: 37, y2: 73, y3: 53 },
             { x: new Date(2009, 0, 1), y: 51, y1: 51, y2: 51, y3: 51 },
             { x: new Date(2010, 0, 1), y: 26, y1: 26, y2: 26, y3: 26 },
             { x: new Date(2011, 0, 1), y: 37, y1: 37, y2: 37, y3: 37 },
             { x: new Date(2012, 0, 1), y: 54, y1: 43, y2: 12, y3: 54 },
             { x: new Date(2013, 0, 1), y: 44, y1: 23, y2: 16, y3: 44 },
             { x: new Date(2014, 0, 1), y: 48, y1: 55, y2: 34, y3: 23 }
        ],
        primaryXAxis: {
            valueType: 'DateTime'
        },
         title: "Annual Temperature Comparisone"
    };
  },
  provide: {
    chart: [StackingAreaSeries, DateTime]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Step Area

To render a step area series, use series type as StepArea and inject StepAreaSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis' :primaryYAxis='primaryYAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='StepArea' xName='x' yName='y' name='India'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StepAreaSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
    { x: 1, y: 7 }, { x: 2, y: 1 }, { x: 3, y: 1 },
    { x: 4, y: 14 }, { x: 5, y: 1 }, { x: 6, y: 10 },
    { x: 7, y: 8 }, { x: 8, y: 6 }, { x: 9, y: 10 },
    { x: 10, y: 10 }, { x: 11, y: 16 }, { x: 12, y: 6 },
    { x: 13, y: 14 }, { x: 14, y: 7 }, { x: 15, y: 5 },
    { x: 16, y: 2 }, { x: 17, y: 14 }, { x: 18, y: 7 },
    { x: 19, y: 7 }, { x: 20, y: 10 }
        ],
    primaryXAxis: {
            valueType: 'Double',
            title: 'Overs'
        };
    primaryYAxis: {
            title: 'Runs'
        };
    title: 'England - Run Rate';
    };
  },
  provide: {
    chart: [StepAreaSeries]
  }
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Stacked Step Area

To render a stacked step area series, use series type as StackingStepArea and inject
StackingStepAreaSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container">
            <e-series-collection>
                <e-series :dataSource='dataSource1' type='StackingStepArea' xName='x' yName='y'> </e-series>
                <e-series :dataSource='dataSource2' type='StackingStepArea' xName='x' yName='y'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StackingStepAreaSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      dataSource1: [{ x: 2000, y: 416 }, { x: 2001, y: 490 }, { x: 2002, y: 470 }, { x: 2003, y: 500 },
                { x: 2004, y: 449 }, { x: 2005, y: 470 }, { x: 2006, y: 437 }, { x: 2007, y: 458 },
                { x: 2008, y: 500 }, { x: 2009, y: 473 }, { x: 2010, y: 520 }, { x: 2011, y: 509 }],
      dataSource2: [{ x: 2000, y: 180 }, { x: 2001, y: 240 }, { x: 2002, y: 370 }, { x: 2003, y: 200 },
                { x: 2004, y: 229 }, { x: 2005, y: 210 }, { x: 2006, y: 337 }, { x: 2007, y: 258 },
                { x: 2008, y: 300 }, { x: 2009, y: 173 }, { x: 2010, y: 220 }, { x: 2011, y: 309 }],
    };
  },
  provide: {
    chart: [StackingStepAreaSeries]
  }
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Range Step Area

To render the range step area series, use the series type as a RangeStepArea and inject the RangeStepAreaSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis' :primaryYAxis='primaryYAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='RangeStepArea' xName='x' high='high' low='low' name='England'> </e-series>
                <e-series :dataSource='seriesData1' type='RangeStepArea' xName='x' high='high' low='low' name='India'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, RangeStepAreaSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
            { x: 'Jan', high: 14, low: 4 },
            { x: 'Feb', high: 17, low: 7 },
            { x: 'Mar', high: 20, low: 10 },
            { x: 'Apr', high: 22, low: 12 },
            { x: 'May', high: 20, low: 10 },
            { x: 'Jun', high: 17, low: 7 },
            { x: 'Jul', high: 15, low: 5 },
            { x: 'Aug', high: 17, low: 7 },
            { x: 'Sep', high: 20, low: 10 },
            { x: 'Oct', high: 22, low: 12 },
            { x: 'Nov', high: 20, low: 10 },
            { x: 'Dec', high: 17, low: 7 }
        ],
      seriesData1:[
            { x: 'Jan', high: 29, low: 19 },
            { x: 'Feb', high: 32, low: 22 },
            { x: 'Mar', high: 35, low: 25 },
            { x: 'Apr', high: 37, low: 27 },
            { x: 'May', high: 35, low: 25 },
            { x: 'Jun', high: 32, low: 22 },
            { x: 'Jul', high: 30, low: 20 },
            { x: 'Aug', high: 32, low: 22 },
            { x: 'Sep', high: 35, low: 25 },
            { x: 'Oct', high: 37, low: 27 },
            { x: 'Nov', high: 35, low: 25 },
            { x: 'Dec', high: 32, low: 22 }
        ],
        primaryXAxis: {
            valueType: 'Category',
            edgeLabelPlacement: 'Shift',
            majorGridLines: { width: 0 }
        },
        primaryYAxis: {
            labelFormat: '{value}ËšC',
            lineStyle: { width: 0 },
            minimum: 0,
            maximum: 40,
            majorTickLines: { width: 0 }
        },
        title: 'Monthly Temperature Range'
    };
  },
  provide: {
    chart: [RangeStepAreaSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Multicolored area

To render a multicolored area series, use the series type as MultiColoredArea, and inject the MultiColoredAreaSeries into the provide. The required segments of the series can be customized using the value, color, and dashArray.

<template>
    <div id="app">
         <ejs-chart :title='title'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='MultiColoredArea' xName='x' yName='y' name='England'
                 segmentAxis='X' :segments='segments'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, MultiColoredAreaSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
          { x: 2005, y: 28 }, { x: 2006, y: 25},
          { x: 2007, y: 26 }, { x: 2008, y: 27 },
          { x: 2009, y: 32}, { x: 2010, y: 35 },
          { x: 2011, y: 25 }
          ],
    title: 'England - Run Rate',
    segments: [{
                    value: 2007,
                    color: 'blue'
                }, {
                    value: 2009,
                    color: 'lightgreen'
                }, {
                    color: 'orange'
        }],
    };
  },
  provide: {
    chart: [MultiColoredAreaSeries]
  }
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

Customization of the series

fill and dashArray of all area type series can be customized using fill and dashArray properties.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='Area'xName='x' yName='y' name='Product A'
                fill='green' width=2 dashArray='5,5' :border='border' opacity=0.6> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, AreaSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
             { x: 1900, y: 4 }, { x: 1920, y: 3.0 },{ x: 1940, y: 3.8 },
             { x: 1960, y: 3.4 }, { x: 1980, y: 3.2 }, { x: 2000, y: 3.9 }
        ],
      border:{width:2, color:'Red'},
      title: "Average Sales Comparison"
    };
  },
  provide: {
    chart: [AreaSeries]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

Customization of the border

The width and fill properties in the border can be used to customize the border of all area type series.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='Area'xName='x' yName='y' name='Product A'
                fill='green' width=2 :border='border' opacity=0.4> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, AreaSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
             { x: 1900, y: 4 }, { x: 1920, y: 3.0 },{ x: 1940, y: 3.8 },
             { x: 1960, y: 3.4 }, { x: 1980, y: 3.2 }, { x: 2000, y: 3.9 }
        ],
      border:{width: 1.5 },
      title: "Average Sales Comparison"
    };
  },
  provide: {
    chart: [AreaSeries]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

Column Charts

  • Column

To render a column series, use series type as Column and inject ColumnSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container":title='title' :primaryXAxis='primaryXAxis'>
            <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 Vue from "vue";
import { ChartPlugin, ColumnSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data: function() {
    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 }
              ],
        primaryXAxis: {
           valueType: 'Category',
           title: 'Countries'
        },
      title: "Olympic Medals"
    };
  },
  provide: {
    chart: [ColumnSeries, Category]
  }
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Range Column

To render a range column series, use series type as RangeColumn and inject RangeColumnSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData1' type='RangeColumn'  xName='x' low='low' high='high'></e-series>
                <e-series :dataSource='seriesData2' type='RangeColumn'  xName='x' low='low' high='high'></e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, RangeColumnSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData1: [
             { x: 'Jan', low: 0.7, high: 6.1 }, { x: 'Feb', low: 1.3, high: 6.3 }, { x: 'Mar', low: 1.9, high: 8.5 },
             { x: 'Apr', low: 3.1, high: 10.8 }, { x: 'May', low: 5.7, high: 14.40 }, { x: 'Jun', low: 8.4, high: 16.90 },
             { x: 'Jul', low: 10.6,high: 19.20 }, { x: 'Aug', low: 10.5,high: 18.9 }, { x: 'Sep', low: 8.5, high: 16.1 },
             { x: 'Oct', low: 6.0, high: 12.5 }, { x: 'Nov', low: 1.5, high: 6.9  }, { x: 'Dec', low: 5.1, high: 12.1 }
              ],
         seriesData2: [
             { x: 'Jan', low: 1.7, high: 7.1 }, { x: 'Feb', low: 1.9, high: 7.7 }, { x: 'Mar', low: 1.2, high: 7.5 },
             { x: 'Apr', low: 2.5, high: 9.8 }, { x: 'May', low: 4.7, high: 11.4 }, { x: 'Jun', low: 6.4, high: 14.4 },
             { x: 'Jul', low: 9.6, high: 17.2 }, { x: 'Aug', low: 10.7, high: 17.9 }, { x: 'Sep', low: 7.5, high: 15.1 },
             { x: 'Oct', low: 3.0, high: 10.5 }, { x: 'Nov', low: 1.2, high: 7.9 }, { x: 'Dec', low: 4.1, high: 9.1 }
              ],
        primaryXAxis: {
            title: 'month',
            valueType: 'Category'
        },
      title: "Maximum and minimum Temperature"
    };
  },
  provide: {
    chart: [RangeColumnSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Stacked Column

To render a stacked column series, use series type as StackingColumn and inject StackingColumnSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='StackingColumn' xName='x' yName='y' name='USA'> </e-series>
                <e-series :dataSource='seriesData' type='StackingColumn' xName='x' yName='y1' name='UK'> </e-series>
                <e-series :dataSource='seriesData' type='StackingColumn' xName='x' yName='y2' name='Canada'> </e-series>
                <e-series :dataSource='seriesData' type='StackingColumn' xName='x' yName='y3' name='China'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StackingColumnSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
             { x: '2014', y: 111.1, y1: 76.9, y2: 66.1, y3: 34.1 },
              { x: '2015', y: 127.3, y1: 99.5, y2: 79.3, y3: 38.2 },
              { x: '2016', y: 143.4, y1: 121.7, y2: 91.3, y3: 44.0 },
              { x: '2017', y: 159.9, y1: 142.5, y2: 102.4, y3: 51.6 },
              { x: '2018', y: 175.4, y1: 166.7, y2: 112.9, y3: 61.9 },
              { x: '2019', y: 189.0, y1: 182.9, y2: 122.4, y3: 71.5 },
              { x: '2020', y: 202.7, y1: 197.3, y2: 120.9, y3: 82.0 }
        ],
        primaryXAxis: {
            title: 'Years',
            interval: 1,
            valueType: 'Category'
        },
         title: "Mobile Game Market by Country"
    };
  },
  provide: {
    chart: [StackingColumnSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • 100% Stacked Column

To render a 100% stacked column series, use series type as StackingColumn100 and inject StackingColumnSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='StackingColumn100' xName='x' yName='y' name='USA'> </e-series>
                <e-series :dataSource='seriesData' type='StackingColumn100' xName='x' yName='y1' name='UK'> </e-series>
                <e-series :dataSource='seriesData' type='StackingColumn100' xName='x' yName='y2' name='Canada'> </e-series>
                <e-series :dataSource='seriesData' type='StackingColumn100' xName='x' yName='y3' name='China'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StackingColumnSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
             { x: '2006', y: 900, y1: 190, y2: 250, y3: 150 },
             { x: '2007', y: 544, y1: 226, y2: 145, y3: 120 },
             { x: '2008', y: 880, y1: 194, y2: 190, y3: 115 },
             { x: '2009', y: 675, y1: 250, y2: 220, y3: 125 },
             { x: '2010', y: 765, y1: 222, y2: 225, y3: 132 },
             { x: '2011', y: 679, y1: 181, y2: 135, y3: 137 },
             { x: '2012', y: 770, y1: 128, y2: 152, y3: 110 },
        ],
        primaryXAxis: {
            title: 'Years',
            interval: 1,
            valueType: 'Category'
        },
         title: "Gross Domestic Product Growth"
    };
  },
  provide: {
    chart: [StackingColumnSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Stacking Group

You can use the stackingGroup property to group the stacked columns and 100% stacked columns. Columns with same group name are stacked on top of each other.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='StackingColumn' xName='x' yName='y' name='USA' stackingGroup='a'> </e-series>
                <e-series :dataSource='seriesData' type='StackingColumn' xName='x' yName='y1' name='UK' stackingGroup='a'> </e-series>
                <e-series :dataSource='seriesData' type='StackingColumn' xName='x' yName='y2' name='Canada' stackingGroup='b'> </e-series>
                <e-series :dataSource='seriesData' type='StackingColumn' xName='x' yName='y3' name='China' stackingGroup='b'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StackingColumnSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
              { x: '2014', y: 111.1, y1: 76.9, y2: 66.1, y3: 34.1 },
              { x: '2015', y: 127.3, y1: 99.5, y2: 79.3, y3: 38.2 },
              { x: '2016', y: 143.4, y1: 121.7, y2: 91.3, y3: 44.0 },
              { x: '2017', y: 159.9, y1: 142.5, y2: 102.4, y3: 51.6 },
              { x: '2018', y: 175.4, y1: 166.7, y2: 112.9, y3: 61.9 },
              { x: '2019', y: 189.0, y1: 182.9, y2: 122.4, y3: 71.5 },
              { x: '2020', y: 202.7, y1: 197.3, y2: 120.9, y3: 82.0 }
        ],
        primaryXAxis: {
            title: 'Years',
            interval: 1,
            valueType: 'Category'
        },
         title: "Mobile Game Market by Country"
    };
  },
  provide: {
    chart: [StackingColumnSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Grouped Column

You can use the groupName property to group the data points in the column type charts. Data points with same group name are grouped together.

<template>
  <ejs-chart
    style="display: block"
    align="center"
    id="container"
    :title="title"
    :primaryXAxis="primaryXAxis"
    :primaryYAxis="primaryYAxis"
    :chartArea="chartArea"
    :tooltip="tooltip"
  >
    <e-series-collection>
      <e-series
        :dataSource="seriesData"
        type="Column"
        xName="x"
        yName="y"
        name="USA Total"
        width="2"
        :marker="marker"
        groupName="USA"
        columnWidth="0.7"
        columnSpacing="0.1"
      >
      </e-series>
      <e-series
        :dataSource="seriesData1"
        type="Column"
        xName="x"
        yName="y"
        name="USA Gold"
        width="2"
        :marker="marker"
        groupName="USA"
        columnWidth="0.5"
        columnSpacing="0.1"
      >
      </e-series>
      <e-series
        :dataSource="seriesData2"
        type="Column"
        xName="x"
        yName="y"
        name="UK Total"
        width="2"
        :marker="marker"
        groupName="UK"
        columnWidth="0.7"
        columnSpacing="0.1"
      >
      </e-series>
      <e-series
        :dataSource="seriesData3"
        type="Column"
        xName="x"
        yName="y"
        name="UK Gold"
        width="2"
        :marker="marker"
        groupName="UK"
        columnWidth="0.5"
        columnSpacing="0.1"
      >
      </e-series>
      <e-series
        :dataSource="seriesData4"
        type="Column"
        xName="x"
        yName="y"
        name="China Total"
        width="2"
        :marker="marker"
        groupName="China"
        columnWidth="0.7"
        columnSpacing="0.1"
      >
      </e-series>
      <e-series
        :dataSource="seriesData5"
        type="Column"
        xName="x"
        yName="y"
        name="China Gold"
        width="2"
        :marker="marker"
        groupName="China"
        columnWidth="0.5"
        columnSpacing="0.1"
      >
      </e-series>
    </e-series-collection>
  </ejs-chart>
</template>
<script>
import Vue from "vue";
import { Browser } from "@syncfusion/ej2-base";
import {
  ChartPlugin,
  ColumnSeries,
  Category,
  DataLabel,
  Tooltip,
  Legend,
} from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default Vue.extend({
  data: function () {
    return {
      seriesData: [
        { x: "2012", y: 104 },
        { x: "2016", y: 121 },
        { x: "2020", y: 113 },
      ],

      seriesData1: [
        { x: "2012", y: 46 },
        { x: "2016", y: 46 },
        { x: "2020", y: 39 },
      ],

      seriesData2: [
        { x: "2012", y: 65 },
        { x: "2016", y: 67 },
        { x: "2020", y: 65 },
      ],

      seriesData3: [
        { x: "2012", y: 29 },
        { x: "2016", y: 27 },
        { x: "2020", y: 22 },
      ],

      seriesData4: [
        { x: "2012", y: 91 },
        { x: "2016", y: 70 },
        { x: "2020", y: 88 },
      ],

      seriesData5: [
        { x: "2012", y: 38 },
        { x: "2016", y: 26 },
        { x: "2020", y: 38 },
      ],

      //Initializing Primary X Axis
      primaryXAxis: {
        valueType: "Category",
        interval: 1,
        majorGridLines: { width: 0 },
      },
      chartArea: { border: { width: 0 } },

      //Initializing Primary Y Axis
      primaryYAxis: {
        majorGridLines: { width: 0 },
        majorTickLines: { width: 0 },
        lineStyle: { width: 0 },
        labelStyle: { color: "transparent" },
      },

      marker: {
        dataLabel: {
          visible: true,
          position: "Top",
          font: { fontWeight: "600", color: "#ffffff" },
        },
      },
      tooltip: {
        enable: true,
      },

      title: "Olympics Medal Tally",
    };
  },
  provide: {
    chart: [ColumnSeries, Legend, DataLabel, Category, Tooltip],
  },
});
</script>

  • Customization of Column Charts

fill and border of all column type series can be customized using fill) and border properties. Width of the column and space between each column can be customized using columnWidth and columnSpacing properties respectively. The columnWidthInPixel property allows to specify the column width in pixel unit. For customizing a specify point, please refer the pointRender.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' columnWidth=0.5 columnSpacing=0.5 type='Column' xName='country' yName='gold' name='Gold' fill='red' :border='border'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, ColumnSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  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 }
              ],
        border: {
            color: 'green',
            width: 2
        },
        primaryXAxis: {
           valueType: 'Category',
           title: 'Countries'
        },
      title: "Olympic Medals"
    };
  },
  provide: {
    chart: [ColumnSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

Bar Charts

  • Bar

To render a bar series, use series type as Bar and inject BarSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='Bar' xName='x' yName='y' name='India'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, BarSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData: [
             { x: 2006, y: 7.8 }, { x: 2007, y: 7.2},
             { x: 2008, y: 6.8 }, { x: 2009, y: 10.7 },
             { x: 2010, y: 10.8}, { x: 2011, y: 9.8 }
              ],
      title: "Unemployment rate (%)"
    };
  },
  provide: {
    chart: [BarSeries]
  }
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Stacked bar

To render a stacked bar series, use series type as StackingBar and
inject StackingBarSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='StackingBar' xName='x' yName='y' name='Apple'> </e-series>
                <e-series :dataSource='seriesData' type='StackingBar' xName='x' yName='y1' name='Orange'> </e-series>
                <e-series :dataSource='seriesData' type='StackingBar' xName='x' yName='y2' name='Wastage'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StackingBarSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data: function() {
    return {
      seriesData:[
             { x: 'Jan', y: 6, y1: 6, y2: -1 }, { x: 'Feb', y: 8 , y1: 8, y2: -1.5 },
              { x: 'Mar', y: 12, y1: 11, y2: -2 }, { x: 'Apr', y: 15, y1: 16, y2: -2.5 },
              { x: 'May', y: 20, y1: 21, y2: -3 }, { x: 'Jun', y: 24, y1: 25, y2: -3.5 },
              { x: 'Jul', y: 28, y1: 27, y2: -4 }, { x: 'Aug', y: 32, y1: 31, y2: -4.5 },
              { x: 'Sep', y: 33, y1: 34, y2: -5 }, { x: 'Oct', y: 35, y1: 34, y2: -5.5 },
              { x: 'Nov', y: 40, y1: 41, y2: -6 }, { x: 'Dec', y: 42, y1: 42, y2: -6.5 }
        ],
        primaryXAxis: {
            valueType: 'Category',
            title: 'Months'
        },
         title: "Sales Comparison"
    };
  },
  provide: {
    chart: [StackingBarSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • 100% Stacked Bar

To render a 100% stacked bar series, use series type as StackingBar100 and
inject StackingBarSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title' :primaryXAxis='primaryXAxis'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='StackingBar100' xName='x' yName='y' name='Apple'> </e-series>
                <e-series :dataSource='seriesData' type='StackingBar100' xName='x' yName='y1' name='Orange'> </e-series>
                <e-series :dataSource='seriesData' type='StackingBar100' xName='x' yName='y2' name='Wastage'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StackingBarSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data: function() {
    return {
      seriesData:[
             { x: 'Jan', y: 6, y1: 6, y2: -1 }, { x: 'Feb', y: 8 , y1: 8, y2: -1.5 },
              { x: 'Mar', y: 12, y1: 11, y2: -2 }, { x: 'Apr', y: 15, y1: 16, y2: -2.5 },
              { x: 'May', y: 20, y1: 21, y2: -3 }, { x: 'Jun', y: 24, y1: 25, y2: -3.5 },
              { x: 'Jul', y: 28, y1: 27, y2: -4 }, { x: 'Aug', y: 32, y1: 31, y2: -4.5 },
              { x: 'Sep', y: 33, y1: 34, y2: -5 }, { x: 'Oct', y: 35, y1: 34, y2: -5.5 },
              { x: 'Nov', y: 40, y1: 41, y2: -6 }, { x: 'Dec', y: 42, y1: 42, y2: -6.5 }
        ],
        primaryXAxis: {
            valueType: 'Category',
            title: 'Months'
        },
         title: "Sales Comparison"
    };
  },
  provide: {
    chart: [StackingBarSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Stacking Group

You can use the stackingGroup property to group stacked bar and 100% stacked bar. Columns with same group name are stacked on top of each other.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title'>
            <e-series-collection>
                <e-series :dataSource='seriesData' type='StackingBar' xName='x' yName='y' name='John' stackingGroup='JohnandAndrew'> </e-series>
                <e-series :dataSource='seriesData' type='StackingBar' xName='x' yName='y1' name='Andrew' stackingGroup='JohnandAndrew'> </e-series>
                <e-series :dataSource='seriesData' type='StackingBar' xName='x' yName='y2' name='Thomas' stackingGroup='ThomasandMichael'> </e-series>
                <e-series :dataSource='seriesData' type='StackingBar' xName='x' yName='y3' name='Thomas' stackingGroup='ThomasandMichael'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, StackingBarSeries, Category } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData:[
             { x: 2007, y: 453, y1: 876, y2: 356, y3: 122 }, { x: 2008, y: 354, y1: 564, y2: 876, y3: 444 },
             { x: 2009, y: 282, y1: 242, y2: 898, y3: 222 }, { x: 2010, y: 321, y1: 121, y2: 567, y3: 231 },
             { x: 2011, y: 333, y1: 343, y2: 456, y3: 122 }, { x: 2012, y: 351, y1: 451, y2: 345, y3: 333 },
             { x: 2013, y: 403, y1: 203, y2: 543, y3: 354 }, { x: 2014, y: 421, y1: 431, y2: 654, y3: 100 }
        ],
         title: "Sales by year"
    };
  },
  provide: {
    chart: [StackingBarSeries, Category]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

  • Grouped Bar

You can use the groupName property to group the data points in the bar type charts. Data points with same group name are grouped together.

<template>
  <ejs-chart
    style="display: block"
    align="center"
    id="container"
    :title="title"
    :primaryXAxis="primaryXAxis"
    :primaryYAxis="primaryYAxis"
    :chartArea="chartArea"
    :tooltip="tooltip"
  >
    <e-series-collection>
      <e-series
        :dataSource="seriesData"
        type="Bar"
        xName="x"
        yName="y"
        name="USA Total"
        width="2"
        :marker="marker"
        groupName="USA"
        columnWidth="0.7"
        columnSpacing="0.1"
      >
      </e-series>
      <e-series
        :dataSource="seriesData1"
        type="Bar"
        xName="x"
        yName="y"
        name="USA Gold"
        width="2"
        :marker="marker"
        groupName="USA"
        columnWidth="0.5"
        columnSpacing="0.1"
      >
      </e-series>
      <e-series
        :dataSource="seriesData2"
        type="Bar"
        xName="x"
        yName="y"
        name="UK Total"
        width="2"
        :marker="marker"
        groupName="UK"
        columnWidth="0.7"
        columnSpacing="0.1"
      >
      </e-series>
      <e-series
        :dataSource="seriesData3"
        type="Bar"
        xName="x"
        yName="y"
        name="UK Gold"
        width="2"
        :marker="marker"
        groupName="UK"
        columnWidth="0.5"
        columnSpacing="0.1"
      >
      </e-series>
      <e-series
        :dataSource="seriesData4"
        type="Bar"
        xName="x"
        yName="y"
        name="China Total"
        width="2"
        :marker="marker"
        groupName="China"
        columnWidth="0.7"
        columnSpacing="0.1"
      >
      </e-series>
      <e-series
        :dataSource="seriesData5"
        type="Bar"
        xName="x"
        yName="y"
        name="China Gold"
        width="2"
        :marker="marker"
        groupName="China"
        columnWidth="0.5"
        columnSpacing="0.1"
      >
      </e-series>
    </e-series-collection>
  </ejs-chart>
</template>
<script>
import Vue from "vue";
import { Browser } from "@syncfusion/ej2-base";
import {
  ChartPlugin,
  BarSeries,
  Category,
  DataLabel,
  Tooltip,
  Legend,
} from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default Vue.extend({
  data: function () {
    return {
      seriesData: [
        { x: "2012", y: 104 },
        { x: "2016", y: 121 },
        { x: "2020", y: 113 },
      ],

      seriesData1: [
        { x: "2012", y: 46 },
        { x: "2016", y: 46 },
        { x: "2020", y: 39 },
      ],

      seriesData2: [
        { x: "2012", y: 65 },
        { x: "2016", y: 67 },
        { x: "2020", y: 65 },
      ],

      seriesData3: [
        { x: "2012", y: 29 },
        { x: "2016", y: 27 },
        { x: "2020", y: 22 },
      ],

      seriesData4: [
        { x: "2012", y: 91 },
        { x: "2016", y: 70 },
        { x: "2020", y: 88 },
      ],

      seriesData5: [
        { x: "2012", y: 38 },
        { x: "2016", y: 26 },
        { x: "2020", y: 38 },
      ],

      //Initializing Primary X Axis
      primaryXAxis: {
        valueType: "Category",
        interval: 1,
        majorGridLines: { width: 0 },
      },
      chartArea: { border: { width: 0 } },

      //Initializing Primary Y Axis
      primaryYAxis: {
        majorGridLines: { width: 0 },
        majorTickLines: { width: 0 },
        lineStyle: { width: 0 },
        labelStyle: { color: "transparent" },
      },

      marker: {
        dataLabel: {
          visible: true,
          position: "Top",
          font: { fontWeight: "600", color: "#ffffff" },
        },
      },
      tooltip: {
        enable: true,
      },

      title: "Olympics Medal Tally",
    };
  },
  provide: {
    chart: [BarSeries, Legend, DataLabel, Category, Tooltip],
  },
});
</script>

  • Customization of Bar Charts

fill and border of all bar type series can be customized using fill and border. Width of the bar and space between each bar can be customized using columnWidth and columnSpacing properties respectively. The columnWidthInPixel property allows to specify the bar width in pixel unit. For customizing a specify point, please refer the pointRender.

<template>
    <div id="app">
         <ejs-chart id="container" :title='title'>
            <e-series-collection>
                <e-series :dataSource='seriesData' columnSpacing=0.5 columnWidth=0.5 type='Bar' xName='x' yName='y' name='India' fill='red' :border='border'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, BarSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData: [
             { x: 2006, y: 7.8 }, { x: 2007, y: 7.2},
             { x: 2008, y: 6.8 }, { x: 2009, y: 10.7 },
             { x: 2010, y: 10.8}, { x: 2011, y: 9.8 }
              ],
       border: {
            width: 2,
            color: 'red'
        },
      title: "Unemployment rate (%)"
    };
  },
  provide: {
    chart: [BarSeries]
  }
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>

Scatter Charts

To render a scatter series, use series type as Scatter and inject ScatterSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container">
            <e-series-collection>
                <e-series :dataSource='seriesData1' type='Scatter' xName='x' yName='y' name='Male' opacity=0.7> </e-series>
                <e-series :dataSource='seriesData2' type='Scatter' xName='x' yName='y' name='Female' opacity=0.7> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, ScatterSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

let series1: Object[] = [];
let series2: Object[] = [];
let point1: Object;
let value: number = 80;
let value1: number = 70;
let i: number;
for (i = 1; i < 50; i++) {
    if (Math.random() > 0.5) {
        value += Math.random();
    } else {
        value -= Math.random();
    }
    value = value < 60 ? 60 : value > 90 ? 90 : value;
    point1 = { x: 120 + (i / 2), y: value.toFixed(1) };
    series1.push(point1);
}
for (i = 1; i < 50; i++) {
    if (Math.random() > 0.5) {
        value1 += Math.random();
    } else {
        value1 -= Math.random();
    }
    value1 = value1 < 60 ? 60 : value1 > 90 ? 90 : value1;
    point1 = { x: 120 + (i / 2), y: value1.toFixed(1) };
    series2.push(point1);
}

export default {
  data() {
    return {
      seriesData1: series1,
      seriesData2: series2
    };
  },
  provide: {
    chart: [ScatterSeries]
  },
};
</script>
<style>
  #container {
   height: 350px;
 }
</style>

Bubble Chart

To render a bubble series, use series type as Bubble and inject BubbleSeries into the provide.

<template>
    <div id="app">
         <ejs-chart id="container">
            <e-series-collection>
                <e-series :dataSource='seriesData1' type='Bubble' size='size' xName='x' yName='y' name='pound'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, BubbleSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData1:  [
        { x: 92.2, y: 7.8, size: 1.347, text: 'China' },
        { x: 74, y: 6.5, size: 1.241, text: 'India' },
        { x: 90.4, y: 6.0, size: 0.238, text: 'Indonesia' },
        { x: 99.4, y: 2.2, size: 0.312, text: 'US' },
        { x: 88.6, y: 1.3, size: 0.197, text: 'Brazil' },
        { x: 99, y: 0.7, size: 0.0818, text: 'Germany' },
        { x: 72, y: 2.0, size: 0.0826, text: 'Egypt' },
        { x: 99.6, y: 3.4, size: 0.143, text: 'Russia' },
        { x: 99, y: 0.2, size: 0.128, text: 'Japan' },
        { x: 86.1, y: 4.0, size: 0.115, text: 'Mexico' },
        { x: 92.6, y: 6.6, size: 0.096, text: 'Philippines' },
        { x: 61.3, y: 14.5, size: 0.162, text: 'Nigeria' }]
    };
  },
  provide: {
    chart: [BubbleSeries]
  },
};
</script>
<style>
  #container {
   height: 350px;
 }
</style>

  • Bubble Size Mapping

size property can be used to map the size value specified in data source.

<template>
    <div id="app">
         <ejs-chart id="container">
            <e-series-collection>
                <e-series :dataSource='seriesData1' type='Bubble' size='size' xName='x' yName='y' name='pound'> </e-series>
            </e-series-collection>
        </ejs-chart>
    </div>
</template>
<script>
import Vue from "vue";
import { ChartPlugin, BubbleSeries } from "@syncfusion/ej2-vue-charts";

Vue.use(ChartPlugin);

export default {
  data() {
    return {
      seriesData1:  [
        { x: 92.2, y: 7.8, size: 1.347, text: 'China' },
        { x: 74, y: 6.5, size: 1.241, text: 'India' },
        { x: 90.4, y: 6.0, size: 0.238, text: 'Indonesia' },
        { x: 99.4, y: 2.2, size: 0.312, text: 'US' },
        { x: 88.6, y: 1.3, size: 0.197, text: 'Brazil' },
        { x: 99, y: 0.7, size: 0.0818, text: 'Germany' },
        { x: 72, y: 2.0, size: 0.0826, text: 'Egypt' },
        { x: 99.6, y: 3.4, size: 0.143, text: 'Russia' },
        { x: 99, y: 0.2, size: 0.128, text: 'Japan' },
        { x: 86.1, y: 4.0, size: 0.115, text: 'Mexico' },
        { x: 92.6, y: 6.6, size: 0.096, text: 'Philippines' },
        { x: 61.3, y: 14.5, size: 0.162, text: 'Nigeria' }]
    };
  },
  provide: {
    chart: [BubbleSeries]
  },
};
</script>
<style>
 #container {
   height: 350px;
 }
</style>